flutter - 如何在 StatelessWidget.build 方法中调用异步方法?
问题描述
我在颤动中有以下代码。在initialRoute:
属性中,它需要调用isLoggedIn()
异步函数的方法。我收到一个错误,说我需要调用await
一个async
函数。但是该build
方法被其父类覆盖,而父类不是async
方法。如何调用await
内部覆盖的方法?
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: await isLoggedIn() ? '/': '/login',
routes: <String, WidgetBuilder>{
'/': (BuildContext context) {
return MyHomePage(title: 'Home Page');
},
'/login': (BuildContext context) {
return Login();
},
}
);
}
}
解决方案
我建议创建一个身份验证路由器小部件来处理应用程序的登录状态将是一个更好的选择,如果用户退出应用程序,导航可以自动更改。IE:
initialRoute: '/user-auth'
然后是一个 UserAuth 小部件,您可以运行您的登录逻辑。
推荐阅读
- javascript - Flask + React:在 Flask api 中加载海量数据并在 React 应用中显示
- postgresql - 使用 gin 的 Postgresql 多索引
- python - 无法使用 mplfinance 绘制蜡烛图
- c++ - 程序段错误
- broom - 多项式 (nnet) 不适用于欧洲防风草和扫帚
- csv - 过滤 csv 文件中的行 (pgfplots)
- python - 如何从python中的api规范yaml文件中检索数据?
- ruby-on-rails - 在 Rails 测试环境中无法使用 TimescaleDB
- hadoop - 使用 Hive 查询超出 GC 开销限制
- javascript - 获取显示值但无法将其保存到变量的控制台