Flutter Web-身份验证.热重新加载时用户ID丢失



我是Flutter Web的新手,一直在为这个问题而烦恼。这正是我在移动设备上对用户进行身份验证的方式,但由于某种原因,当我在flutter web上使用热重载时,用户身份验证会丢失并返回null,并显示CircularProgressIndicator(CPI(。

它为什么要这么做?如果调用了null,那么它肯定会显示LoginPage((——当页面最初加载时就是这样——但一旦我热加载,它就会返回null和CPI。

此外,我添加了一个打印语句来帮助我跟踪用户呼叫,并注意到每次导航到新页面时都会打印用户id,并想知道为什么会这样?

我想实现的目标:

  1. 如果snapshot.data==null,则登录页将用户引导到登录页
  2. 如果snapshot.data!=null
  3. 如果ConnectionState.waiting,则返回循环进度指示符
  4. 修复如上所述的错误

    class Landing extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
    final auth = Provider.of<UserRepository>(context, listen: false);
    return StreamBuilder(
    stream: auth.onAuthStateChanged,
    builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.active) {
    User user = snapshot.data;
    print(user);
    return user == null ? LoginPage() : HomePage();
    } else
    return Scaffold(
    body: Center(
    child: CircularProgressIndicator(),
    ),
    );
    },
    );
    }
    }
    

我是通过F5而不是flutter run-d chrome运行程序的通过F5运行程序可以按下VScode上的热重新加载按钮,但重要的是,Flutter Web上目前不提供热重新加载。

我相信,这在一定程度上回答了我的问题。

您正在将流传递到无状态小部件中。将无状态小部件更改为有状态小部件,这将解决您的问题。

最新更新