Как сохранить позицию прокрутки Flutter Custom Scroll View? - PullRequest
0 голосов
/ 23 января 2019

У меня есть 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 состояние прокрутки при навигации по страницам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...