【问题标题】:MaterialApp routes and BottomNavigationBarMaterialApp 路由和 BottomNavigationBar
【发布时间】:2021-09-12 13:40:48
【问题描述】:

通过关注此线程,我无法将路线和 BottomNavigationBar (How to use a named routes in a BottomNavigationBar in flutter?) 结合起来。

关于如何使这项工作的任何建议? 我正在尝试为一些定义的路线添加一个 BottomNavigationBar。 对于其余路线,不应出现 BottomNavigationBar。

void main() {
  runApp(Og1AlarmApp());
}

class Og1AlarmApp extends StatelessWidget {
  final Map<String, WidgetBuilder> _routes = {
    AppRoute.of(AppScreen.alarmList): (c) => AlarmListScreen(),
    AppRoute.of(AppScreen.alarmDetails): (c) => AlarmDetailsScreen(),
    AppRoute.of(AppScreen.alarm): (c) => AlarmScreen(),
    AppRoute.of(AppScreen.dashboard): (c) => DashboardScreen(),
  };

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Og1 Alarm',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        routes: _routes,
        initialRoute: AppRoute.of(AppScreen.alarmList),
        home: Scaffold(
          body: Center(
            child: _routes[AppRoute.of(AppScreen.alarmList)],
          ),
          bottomNavigationBar: BottomNavigationBar(
            items: <BottomNavigationBarItem>[
              BottomNavigationBarItem(icon: Icon(Icons.alarm_rounded)),
              BottomNavigationBarItem(icon: Icon(Icons.apps_rounded)),
              BottomNavigationBarItem(icon: Icon(Icons.analytics_rounded)),
            ],
            currentIndex: 0,
            selectedItemColor: Palette.gainsboro,
            unselectedItemColor: Palette.lightGray,
            onTap: (index) {
              switch (index) {
                case 0:
                  Navigator.pushNamed(
                      context, AppRoute.of(AppScreen.alarmList));
                  break;
                case 1:
                  Navigator.pushNamed(
                      context, AppRoute.of(AppScreen.dashboard));
                  break;
                case 2:
                  Navigator.pushNamed(
                      context, AppRoute.of(AppScreen.sleepMonitor));
                  break;
              }
            },
          ),
        ));
  }
}

首先在上面的线程中,路由是从 MaterialApp 以某种方式访问​​的,这在我的情况下会引发错误。 其次访问 _routes 变量为 _routes[AppRoute.of(AppScreen.alarmList)] or_routes['/alarmList'] throws (The argument type 'Widget Function(BuildContext)?' can't be assigned to the parameter type 'Widget?' )

感谢您的评价

【问题讨论】:

    标签: flutter flutter-routes


    【解决方案1】:

    我能够按照此处的说明找到解决方案: https://www.vojtech.net/posts/flutter-bottom-navigation/

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 1970-01-01
      • 2021-09-30
      • 2019-09-17
      • 2021-06-20
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      相关资源
      最近更新 更多