flutter 页面保持状态

181 阅读1分钟

基于StatefulWidget AutomaticKeepAliveClientMixin 使用pageView进行保持

  int _currentIndex = 0;
  List<Widget> tabs = [One(), Two(), Three()];
  final pageController = PageController();
  ...
  return Scaffold(
      body: PageView(
        controller: pageController,
        onPageChanged: (index) {
          _currentIndex = index;
          setState(() {});
        },
        children: tabs,
      ),
      bottomNavigationBar: BottomNavigationBar(
        onTap: (index) {
          pageController.jumpToPage(index);
          setState(() {});
        },

        type: BottomNavigationBarType.fixed,
        currentIndex: _currentIndex,
        items: <BottomNavigationBarItem>[
          BottomNavigationBarItem(icon: Icon(Icons.directions_walk), title: Text('一')),
          BottomNavigationBarItem(icon: Icon(Icons.money_off), title: Text('二')),
          BottomNavigationBarItem(icon: Icon(Icons.person_outline), title: Text('三')),
        ],
      ),
    );