我正在尝试在CupertinoApp中添加带有底部导航栏的路由器,但是Navigator.pushNamed(context,anotherPage)
出现错误
在_CupertinoTabViewState中找不到路由RouteSettings(“ / anotherPage”,null)的生成器。
但是Navigator.push(context, CupertinoPageRoute(builder: (context)=>AnotherPage()));
正在工作
示例代码:
return CupertinoApp(
localizationsDelegates: <LocalizationsDelegate<dynamic>>[
DefaultMaterialLocalizations.delegate,
DefaultWidgetsLocalizations.delegate,
DefaultCupertinoLocalizations.delegate,
],
theme: CupertinoThemeData(brightness: Brightness.light),
onGenerateRoute: Router.generateRoute,
initialRoute: splashScreen,
); }}
//路由器类
class Router {
static Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case homeRoute:
return CupertinoPageRoute(builder: (_) => CupertinoHomePage());
case productDetails:
final ProductDetails args = settings.arguments;
return CupertinoPageRoute(
builder: (_) =>
ProductDetails(args.productsPojo, args.userId));
case anotherPage:
return MaterialPageRoute(builder: (_) => AnotherPage());
case splashScreen:
return MaterialPageRoute(builder: (_) => SplashScreen());
default:
return MaterialPageRoute(builder: (_) => UndefinedView(name: settings.name));
}
}
}
答案 0 :(得分:0)
我为此苦了一段时间。 CupertinoTabView具有“路线”属性。在此处放置您的应用程序路线
return CupertinoTabView(
routes: appRoutes,
builder: (BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text(
titles[currentRoute]
),
trailing: FlatButton(
child: Icon(Icons.search, color: Colors.white,),
onPressed: openSearch,
),
),
child: Material(
child: Center(
child: routes[currentRoute],
),
),
);
},
);
appRoutes:
final appRoutes = {
'/exampleRoute': (context) => ExampleRoute(),
'/exampleRoute2': (context) => ExampleRoute2(),
}
基本上,您必须复制在main.dart中已经声明的路由