У меня есть Material App с CustomScrollView
и BottomNavigationBar
, в CustomScrollView
у меня есть SliverAppBar
и одна страница Widget
(скажем, page1, page2 и т. Д.), Которая представляет BottomNavigationBar's
текущий индекс,на каждой странице Widget
есть SliverList
с некоторым содержанием
Я пытался поместить ключи и ScrollControllers
в CustomScrollView
, но это не работает, как я ожидаю, при переходе между страницами.является начальным.
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's
состояние прокрутки при навигации по страницам.