首页 > 解决方案 > 如何在 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();
        },
      }

    );
  }
}

标签: flutterdart

解决方案


我建议创建一个身份验证路由器小部件来处理应用程序的登录状态将是一个更好的选择,如果用户退出应用程序,导航可以自动更改。IE:

initialRoute: '/user-auth'

然后是一个 UserAuth 小部件,您可以运行您的登录逻辑。


推荐阅读