【发布时间】:2021-09-20 17:44:19
【问题描述】:
我正在使用 Flutter,并且已经使用类 Routes 在视图之间导航,但是 IDE 会抛出下一个错误: 错误:没有为“UserLogin”类型定义吸气剂“create”。 这是代码:
class Routes{
static const login = '/';
static const registra = '/registra';
static const home = '/home';
static const info = '/info';
static const incons = '/incons';
static Route routes(RouteSettings routeSettings){
switch(routeSettings.name){
case login:
return _buildRoute(UserLogin.create);
case registra:
return _buildRoute(EmailCreate.create);
case home:
return _buildRoute(HomeMenu.create);
case info:
return _buildRoute(UserInfoMenu.create);
case incons:
return _buildRoute(IssuesContainer.create);
default:
throw Exception('Route does not exists');
}
}
static MaterialPageRoute _buildRoute(Function build)=> MaterialPageRoute(builder: (context)=>build(context));
}
我正在导入我正在使用的所有类,但唯一不会引发任何错误的是 EmailCreate 一个
我附上Routes类的实现:
final _navigatorkey = GlobalKey<NavigatorState>();
class MyApp extends StatelessWidget {
static Widget create(){
return BlocListener<AuthCubit, AuthState>(
listener: (context, state){
if (state is AuthSignedOut){
_navigatorkey.currentState?.pushNamedAndRemoveUntil(Routes.login, (route) => false);
}else if (state is AuthSignedIn){
_navigatorkey.currentState?.pushNamedAndRemoveUntil(Routes.home, (route) => false);
}
},
child: MyApp(),
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: _navigatorkey,
title: 'Flutter Demo',
onGenerateRoute: Routes.routes,
);
}
}
我不知道使用 Navigator.push 和 Navigator.pop 代替 Routes 是否更好。
【问题讨论】:
-
您能否显示以下类的代码:
UserLogin、EmailCreate、HomeMenuUserInfoMenu和IssuesContainer?
标签: firebase flutter navigation