使用getx:尝试执行以下操作
- Get.put身份验证控制器(侦听身份验证更改(
- 创建GetMaterialApp
- 身份验证更改后,导航到命名路由"/login">
下面是一个示例代码:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// firebase init
await Firebase.initializeApp();
// controllers
Get.put<AuthController>(AuthController());
runApp(
MyApp(),
);
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Get',
initialRoute: "/",
routes: appRoutes,
);
}
}
尝试这样做会导致以下错误:
You are trying to use contextless navigation without a GetMaterialApp or Get.key
这是因为onAuthChanged事件是在创建/启动GetMaterialApp之前调用的,我想。。。
如何在我的主类上创建和启动身份验证控制器?
删除主功能块上的Get.put语句,然后删除
试试这个
@override
Widget build(BuildContext context) {
// Add this line
Get.put<AuthController>(AuthController(), permanent: true,);
return GetMaterialApp(
title: 'Get',
initialRoute: "/",
routes: appRoutes,
);
}
或
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Get',
initialRoute: "/",
routes: appRoutes,
// add this argument
onInit: () {
Get.put<AuthController>(AuthController(), permanent: true,);
},
);
}