我正在使用ListView
with scroll_to_index自动滚动到ListView
. 注意:我需要一个AutoScrollController
才能完成这项工作。
这就是棘手的地方。那ListView
是在一个NestedScrollView
里面有一个浮动的SliverAppBar
。所以,像这样:
NestedScrollView(
controller: _autoScrollController, // [A]
floatHeaderSlivers: true,
headerSliverBuilder: (_, __) => [ MySliverAppBar(...) ],
body:
PageView(
onPageChanged: (index) => model.updateEditModeForIndex(index),
controller: _pageController,
children: [
ListView(
key: _pageKeys[0],
padding: EdgeInsets.zero,
controller: _autoScrollController, // [B]
children: editProfileElements), // List of AutoScrollTag widgets
ListView(
key: _pageKeys[1],
padding: EdgeInsets.zero,
children: viewProfileElements)
]))
问题
我需要弄清楚如何使用ScrollController
s 以便我可以获得 s 的自动显示/隐藏(浮动)SliverAppBar
以及提供的自动滚动功能AutoScrollController
。
我无法在两个地方(和第一个)上传递AutoScrollController
实例,因为我得到了预期的错误:NestedScrollView
ListView
Failed assertion: line 109 pos 12: '_positions.length == 1': ScrollController attached to multiple scroll views.
但:
- [A] 如果我在这里传递它,appbar 会在必要时显示/隐藏
- [B] 如果我在这里传递它,自动滚动工作正常
如何做到这一点?
我可以使用两个scrollControllers 并以某种方式同步它们,以便外部触发浮动appBar 的显示/隐藏,这样我就可以拥有scroll_to_index包提供的自动滚动功能?