我需要从 localstorge 获取数据,并根据数据值 isLogin 是 true 或 false 如果 isLogin 值为 true 则返回不同的 MaterialApp,如果为 false 则返回不同的 MaterialApp。
Widget build(BuildContext context) {
return FutureBuilder(
future: storage.ready,
builder: (BuildContext context, snapshots) {
if (snapshots.hasData) {
var isLogin = storage.getItem('isLogin');
if (snapshots.data == true) {
return MaterialApp(
initialRoute: '/sample',
onGenerateRoute: RouteGenerator.generateRoute,
);
} else {
return MaterialApp(
initialRoute: '/',
onGenerateRoute: RouteGenerator.generateRoute,
);
}
}
},
);
}
Run Code Online (Sandbox Code Playgroud)
所以这就是我的做法,我不确定这是否是最好的解决方案,但它有效。
main() async {
String isToNavigate = await MainAppService().getPrefValue('isToRemember');
String typeOfUser = await MainAppService().getPrefValue('typeOfUser');
if (isToNavigate != null) {
if (typeOfUser == 'admin') {
WidgetsFlutterBinding.ensureInitialized();
runApp(AdminMyApp());
}
if (typeOfUser == 'client') {
WidgetsFlutterBinding.ensureInitialized();
runApp(MyAppClient());
}
if (typeOfUser == 'professional') {
WidgetsFlutterBinding.ensureInitialized();
runApp(MyProfessionalsApp());
}
} else {
print('null is found /');
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2635 次 |
| 最近记录: |