1

我正在使用ListViewwith 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)
        ]))

问题

我需要弄清楚如何使用ScrollControllers 以便我可以获得 s 的自动显示/隐藏(浮动)SliverAppBar以及提供的自动滚动功能AutoScrollController

我无法在两个地方(和第一个)上传递AutoScrollController实例,因为我得到了预期的错误:NestedScrollViewListView

Failed assertion: line 109 pos 12: '_positions.length == 1': ScrollController attached to multiple scroll views.

但:

  • [A] 如果我在这里传递它,appbar 会在必要时显示/隐藏
  • [B] 如果我在这里传递它,自动滚动工作正常

如何做到这一点?

我可以使用两个scrollControllers 并以某种方式同步它们,以便外部触发浮动appBar 的显示/隐藏,这样我就可以拥有scroll_to_index包提供的自动滚动功能?

4

0 回答 0