我如何测试用户是否已登录以及是否路由到我的 Flutter 应用程序中的另一个页面?

How can I test if the user is signed in and if not route to another page in my Flutter app?

如果用户未登录,我想导航到另一个页面。我尝试将此代码添加到 initState,但在生命周期的这个阶段我无法使用导航。还有其他选择吗?

这在 StatefulWidget 或 State 的构造函数中也不起作用。从看起来我必须控制路由。

// Where can I apply this code.
if (auth.currentUser == null) {
  Navigator.of(context).pushNamed(SignInPage.routeName);
}

有人问了类似的问题

虽然技术上可以用 post 帧回调来做你想做的事,但你可能不想在这里将新路由推到 Navigator 上,因为你不希望用户能够按登录页面上的后退按钮并返回主页。此外,您可能希望通过将用户带回登录屏幕来处理用户注销的情况。

考虑在主屏幕的构建功能中使用类似的东西。

Widget build() {
  return auth.currentUser == null ? new SignInPage() : new HomePage();
}

如果您正在使用 Google 登录

Widget build() {
  return new StreamBuilder(
    stream: googleSignIn.onCurrentUserChanged,
    builder: (context, user) {
      return user.data != null ? new HomePage() : new SignInPage();
    }
  );
}