作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 flutter 中有以下代码。在 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();
},
}
);
}
}
最佳答案
据我说,不可能做你想做的事。
正如您提到的 isLoggedIn 是异步的,这将需要时间来计算,同时构建方法完成构建。您可以使用 future build 者 在无状态小部件中执行异步任务,但由于这是您的初始路线,您必须提供它,所以它再次不起作用。
我建议您添加启动画面,您可以在其中计算平均调用该方法并找出导航。
关于flutter - 如何在 StatelessWidget.build 方法中调用异步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61558607/
我是一名优秀的程序员,十分优秀!