我有一个带有
我尝试将Keys和
CustomScrollView
和BottomNavigationBar
的Material应用程序,在CustomScrollView
中我有一个SliverAppBar
和一个页面Widget
(比如page1,page2等...),它表示BottomNavigationBar
的当前索引,在每个页面Widget
上都有一些内容的SliverList
。我尝试将Keys和
ScrollControllers
放入CustomScrollView
中,但它并不像我期望的那样工作,当在页面之间导航时,滚动位置是初始的。请注意保留HTML标记。class WrapperPage extends StatefulWidget {
@override
_WrapperPage createState() => _WrapperPage();
}
class _WrapperPage extends State<WrapperPage> {
int _curIndex = 0;
List<Widget> _pages;
List<PageStorageKey> _keys;
List<ScrollController> _ctrls;
@override
void initState() {
_pages = [
// some pages pages
];
_keys = List();
_ctrls = List();
for (int i = 0; i < 5; ++i) {
_keys.add(PageStorageKey('scroll$i'));
_ctrls.add(ScrollController());
}
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: CustomScrollView(
key: _keys[_curIndex],
controller: _ctrls[_curIndex],
slivers: <Widget>[SliverAppBar(), _pages[_curIndex]],
),
bottomNavigationBar: BottomNavigationBar(
onTap: (int i) {
setState(() {
_curIndex = i;
});
},
currentIndex: _curIndex,
items: [
// some buttons
],
),
);
}
}
我的目标是在导航页面时保存CustomScrollView
的滚动状态。
initState()
时重新加载它。 - user1462442