【发布时间】:2020-02-13 23:50:49
【问题描述】:
这个问题真的非常像this one。我遵循了接受的答案,但没有任何反应。
我尝试修改main.dart 上的第一个目标网页,无论是HomePage() 还是OnBoardingPage()。我从 Shared Preferences 中获取数据(bool)并先进行检查。
如您所见,OnBoardingPage() 只是一个一次性事件屏幕。
代码如下:
class MyApp extends StatelessWidget {
SharedPrefs prefs = SharedPrefs();
Future<bool> _initBro() async {
var redirect = await prefs.read("onboard") ?? false;
print("main => $redirect");
return redirect;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
fontFamily: 'CM Sans Serif',
platform: TargetPlatform.android,
),
home: (_initBro().then(val => val == true)) ? HomePage() : OnBoardingPage(),
// home: HomePage(),
debugShowCheckedModeBanner: false,
);
}
}
问题出在home: 行。
我不太明白为什么它仍然给我这样的错误。 我已经用 await 更改了代码,但似乎给我带来了更多麻烦。我也做了一些修改:
home: _initBro().then((val) {
return (val) ? HomePage() : OnBoardingPage();
}),
但还是没有希望。
我是 Flutter 的新手,Dart 也是如此。任何帮助将不胜感激。
非常感谢大家的关注。
【问题讨论】:
-
为什么不在 main 中调用 _initBro,然后再在 home 中检查 bool 值
-
尝试使用
Futurebuilder
标签: flutter dart sharedpreferences