我有一个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滚动视图
如果我单独使用它们,一切正常,但我想保存滚动位置,并将headerSliverBuilder绑定到NestedScrollView的主体。
如果我同时使用它们,则_scrollController没有任何作用 而我使用_arrowsController的原因是将两个滚动视图绑定在一起,因为如果在gridView中滚动,sliverAppBar不会移动。
所以我对这种行为以及应该怎么做感到困惑
希望这很清楚,对我有帮助!!!!