我对Flutter Web还是陌生的,一直以来都在努力。这正是我在移动设备上对用户进行身份验证的方式,但是由于某些原因,当我在Flutter网站上使用热重装时,用户身份验证会丢失并返回null并显示CircularProgressIndicator(CPI)。
为什么要这样做?如果调用了null,则肯定会显示LoginPage()-最初加载页面时即是如此-但当我热重新加载后,它将返回null和CPI。
进一步-我添加了一条打印语句来帮助我跟踪用户呼叫-并且每次我导航到新页面时都会注意到用户ID会被打印出来并想知道为什么这样做?
我想要实现的目标:
如上所述解决错误
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(),
),
);
},
);
}
}
答案 0 :(得分:0)
您正在将流传递到无状态窗口小部件中。 将无状态小部件更改为有状态小部件,这将解决您的问题。
答案 1 :(得分:0)
我是通过F5运行程序的,而不是通过flutter运行-d chrome 通过F5运行程序可以使人们按下VScode上的热重载按钮,但重要的是,当前Flutter Web上不提供热重载。
我相信,这部分地回答了我的问题。