首页 > 解决方案 > 使用命名路由时找不到路由错误的生成器

问题描述

我正在尝试CupertinoTabBar与命名路由一起使用。我尝试添加一个CupertinoTabScaffold并在其中包含选项卡视图的选项卡栏,但是当应用程序将应用程序推送到不同的路线时,应用程序会引发错误:

FlutterError (Could not find a generator for route RouteSettings("/randomONE", null) in the _CupertinoTabViewState

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      create: (context) => SomeProvider(),
      child: MaterialApp(
        title: 'Cool Title',
        home: CupertinoTabScaffold(
            tabBar: CupertinoTabBar(
              items: [
                BottomNavigationBarItem(title: Text('First Page'), icon: Icon(Icons.access_alarms)),
                BottomNavigationBarItem(title: Text('Second Page'), icon: Icon(Icons.account_balance)),
                BottomNavigationBarItem(title: Text('Third Page'), icon: Icon(Icons.accessible)),
              ],
            ),
            tabBuilder: (context, index) {
              CupertinoTabView selectedView;
              switch (index) {
                case 0:
                  selectedView = CupertinoTabView(builder: (context) {
                    return CupertinoPageScaffold(child: FirstPage());
                  });
                  break;
                default:
              }

              return selectedView;
            }),
        initialRoute: NamedRoutes.splashScreen,
        routes: {
          '/first': (BuildContext context) => FirstPage(),
          '/second': (BuildContext context) => SecondPage(),
          '/randomONE': (BuildContext context) => ThirdPage(),
        },
      ),
    );
  }
}

标签: flutter

解决方案


您只需完成切换:

switch (index) {
  case 0:
    selectedView = CupertinoTabView(builder: (context) {
      return CupertinoPageScaffold(child: FirstPage());
    });
    break;
  case 1:
    selectedView = CupertinoTabView(builder: (context) {
      return CupertinoPageScaffold(child: SecondPage());
    });
    break;
  case 2:
    selectedView = CupertinoTabView(builder: (context) {
      return CupertinoPageScaffold(child: ThirdPage());
    });
    break;
  default:
}


推荐阅读