与nestedScrollView

时间:2019-09-22 18:55:22

标签: flutter dart

我有一个bottomNavigationBar,我想保存Scroll的位置 所以在我的initState中,我有

    _arrowsController =
        ScrollController();
    _scrollController = ScrollController(initialScrollOffset: global.artistScrollPosition);

我的脚手架上有

NestedScrollView(
            controller: _scrollController,
            headerSliverBuilder: (BuildContext context, bool boxIsScrolled) {
              return <Widget>[_sliverAppBar()];
            },
            body: NotificationListener(
              child: _gridView(),
              onNotification: (notification) {
                if (notification is ScrollNotification) {
                  global.artistScrollPosition = notification.metrics.pixels;
                }
              },
            ),
          ),

_gridView是:

  _gridView() {
    return GridView.builder(
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 3),
        controller: _arrowsController,
        itemCount:
            _artists == null ? global.artistPaginate : _artists['data'].length,
        itemBuilder: (BuildContext context, int index) {
          return _gridViewItems(index);
        },
    );
  }

_arrowsController的目的是保存滚动位置和 _scrollController的目的是具有Paralex滚动视图

如果我单独使用它们,一切正常,但我想保存滚动位置,并将headerSliv​​erBuilder绑定到NestedScrollView的主体。

如果我同时使用它们,则_scrollController没有任何作用 而我使用_arrowsController的原因是将两个滚动视图绑定在一起,因为如果在gridView中滚动,sliverAppBar不会移动。

所以我对这种行为以及应该怎么做感到困惑

希望这很清楚,对我有帮助!!!!

0 个答案:

没有答案