当返回页面浮动时,请记住bottomNavigation栏的状态

时间:2019-10-22 15:43:34

标签: flutter router bottomnavigationview

main_activity.dart中,有四个底部导航栏,分别名为A,B,C和D。

main_activity.dart

class MainPage extends StatefulWidget {
  static const ROUTE = '/mainPage';

  @override
  State<StatefulWidget> createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {
  int _selectedIndex = 2;
  final _tabs = [
    A(),
    B(),
    C(),
    D(),
  ];

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      child: Scaffold(
        body: _tabs[_selectedIndex],
        bottomNavigationBar: BottomNavigationBar(
          type: BottomNavigationBarType.fixed,
          currentIndex: _selectedIndex,
          items: [
           ...
          ],
          onTap: (index) => setState(() {
            _selectedIndex = index;
          }),
        ),
      ),
       onWillPop: () => _requestPop(context),
    );
  }
}

最初它将在选项卡C中打开页面。当我单击选项卡B时,它将显示B页面,其中包含一个浮动操作按钮。单击浮动操作按钮时,它将调用add_B.dart。我的问题是,当我单击add_B.dart中的后退按钮时,它将返回到main_activity并打开选项卡C页面。如何使其改为打开标签B页?

add_B.dart

onWillPop: (){
        _backToPreviousPage(context);
      },

 void _backToPreviousPage(BuildContext context) {
    Navigator.of(context).pushReplacementNamed(MainPage.ROUTE);
  }

1 个答案:

答案 0 :(得分:2)

您可以创建global.dart文件,并在其中声明int _selectedIndex = 2; 如果将_selectedIndex设置为某个值,则在每次使用该文件时都将其导入,该值将随应用程序一起保存。