Как сохранить индекс PageView? - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть PageView для отображения 4 страниц и BottomNavigationBar для их переключения.У меня проблемы с PageController.

На любой странице я перехожу на новый экран, но когда возвращаюсь, PageView возвращается на начальную страницу, а нет на последнюю.

Вот как я использую PageView

@override
void initState() {
  super.initState();
  _page = 0;
  _pageController = PageController(keepPage: true);
}

return Scaffold(
  appBar: AppBar(
      title: getAppBarTitle(_page),
      centerTitle: true,
      actions: renderActions(_page)),
  body: PageView(
      children: <Widget>[
        DashboardScreen(),
        InstructionsScreen(),
        CatalogScreen(),
        ProfileScreen()
      ],
      controller: _pageController,
      onPageChanged: onPageChanged,
      physics: NeverScrollableScrollPhysics()),
  bottomNavigationBar: BottomNavigationBar(
    key: bottomNavigationBar,
    type: BottomNavigationBarType.shifting,
    onTap: navigationTapped,
    currentIndex: _page,
    items: [
      BottomNavigationBarItem(
          icon: Icon(Icons.home, color: Colors.grey),
          activeIcon:
              Icon(Icons.home, color: Theme.of(context).primaryColor),
          title: Text('Dashboard',
              style: TextStyle(color: Theme.of(context).primaryColor)),
          backgroundColor: Colors.white),
      BottomNavigationBarItem(
          icon: Icon(Icons.receipt, color: Colors.grey),
          activeIcon:
              Icon(Icons.receipt, color: Theme.of(context).primaryColor),
          title: Text('Instructions',
              style: TextStyle(color: Theme.of(context).primaryColor)),
          backgroundColor: Colors.white),
      BottomNavigationBarItem(
          icon: Icon(Icons.dashboard, color: Colors.grey),
          activeIcon:
              Icon(Icons.dashboard, color: Theme.of(context).primaryColor),
          title: Text('Catalog',
              style: TextStyle(color: Theme.of(context).primaryColor)),
          backgroundColor: Colors.white),
      BottomNavigationBarItem(
          icon: Icon(Icons.person, color: Colors.grey),
          activeIcon:
              Icon(Icons.person, color: Theme.of(context).primaryColor),
          title: Text('Profile',
              style: TextStyle(color: Theme.of(context).primaryColor)),
          backgroundColor: Colors.white)
    ],
  ),
);

void navigationTapped(int page) {
  _pageController.animateToPage(page,
    duration: const Duration(milliseconds: 300), curve: Curves.ease);
}

void onPageChanged(int page) {
  setState(() {
    this._page = page;
  });
}

Например, в DashboardScreen я перехожу на новую страницу, например:

Navigator.of(context)
            .push(MaterialPageRoute(builder: (context) => CodeScreen()))

Как это исправить?Мне нужно использовать Redux или Bloc для этого?

Спасибо.

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