Flutter - 如何实现带命名路径的底部导航栏?

问题描述 投票:0回答:1

我想实现一个带有命名路线的底部导航栏。似乎视图一直在刷新,卡住了,而且当我点开底部导航标签时,它们与我的代码不一致。

final _navigatorKey = GlobalKey<NavigatorState>();
  int currentIndex = 0;
  List<String> _pages = <String>[
    Routes.startupViewRoute,
    Routes.startupViewRoute,
    Routes.startupViewRoute,
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Navigator(
        key: _navigatorKey,
        initialRoute: Routes.startupViewRoute,
        onGenerateRoute: Router().onGenerateRoute,
      ),
      bottomNavigationBar: BottomNavigationBar(
        type: BottomNavigationBarType.fixed,
        currentIndex: currentIndex,
        onTap: (index) {
          _navigatorKey.currentState.pushNamed(_pages[index]);
        },
        items: [
          BottomNavigationBarItem(
            icon: new Icon(Icons.home),
            title: new Text('Home'),
          ),
          BottomNavigationBarItem(
            icon: new Icon(Icons.person),
            title: new Text('Profile'),
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.settings),
            title: Text('Settings'),
          )
        ],
      ),
    );
flutter flutter-layout
1个回答
1
投票

1.在你要导航的屏幕上添加一个最终变量,用来存放路由,例如:static const routeName = 'pageName'; (这个很重要)。

  1. 在主页面需要添加:PageName.routeName:(ctx)=>PageName()。

  2. 在你想重定向到新页面的地方add:Navigator.of(ctx).pushNamed(PageName.routeName);你也可以通过它传递参数。

© www.soinside.com 2019 - 2024. All rights reserved.