gpt4 book ai didi

flutter - 将 'Future' 更改为静态类型 'bool' 以获取条件

转载 作者:行者123 更新时间:2023-12-03 03:16:03 28 4
gpt4 key购买 nike

这个问题真的很像 this one .我遵循了公认的答案,但没有任何 react 。

我尝试在 main.dart 上修改我的第一个登录页面是否是HomePage()OnBoardingPage() .我从共享首选项中获取数据( 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:线。

main.dart

我不太明白为什么它仍然给我这样的错误。
我已经用 await 更改了代码,但似乎给我带来了更多麻烦。我也修改了它有点像这样:
home: _initBro().then((val) {
return (val) ? HomePage() : OnBoardingPage();
}),

但仍然没有希望。

我是 Flutter 的新手,也绝对是 Dart 的新手。任何帮助将非常感激。

非常感谢大家的关注。

最佳答案

您可以使用 FutureBuilder

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: FutureBuilder(builder: (context, AsyncSnapshot<bool> snapshot) {
if (snapshot.hasData)
return snapshot.data ? HomePage() : OnBoardingPage();
else
return Container();
},
future: _initBro(),);
}
debugShowCheckedModeBanner: false,
);
}
}

它同步返回小部件。如果还没有数据 - 它返回空 Container , 当 _initBro()返回值 - 此方法将返回所需的小部件

关于flutter - 将 'Future<bool>' 更改为静态类型 'bool' 以获取条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58426165/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com