firebase - 登录 Firebase/Flutter
问题描述
我创建了一个小部件来选择要渲染LoginScreen()
或HomeScreen()
调用的页面Wrapper()
,这是代码:
class _WrapperState extends State<Wrapper> {
@override
void initState() {
super.initState();
var auth = FirebaseAuth.instance;
auth.onAuthStateChanged.listen((user) {
if (user != null) {
print("user is logged in");
Navigator.of(context).pushReplacementNamed(HomeScreen.routeName);
} else {
print("user is not logged in");
Navigator.of(context).pushReplacementNamed(LoginScreen.routeName);
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold();
}
}
运行signOut()
函数时抛出的错误:
Error: The method 'findAncestorStateOfType' was called on nullWrapper widget returned null
解决方案
您不必做所有这些,firebase 身份验证可以处理登录并保持用户登录。在生命周期的第一个方法中initState
,您可以执行以下操作:
@override
void initState() {
super.initState();
var auth = FirebaseAuth.instance;
auth.onAuthStateChanged.listen((user) {
if (user != null) {
print("user is logged in");
//navigate to home page using Navigator Widget
} else {
print("user is not logged in");
//navigate to sign in page using Navigator Widget
}
});
}
推荐阅读
- sql - 在 SQL 中,如何选择一列中的值没有任何重复项(即 DISTINCT)并且另一列中的值没有重复的行?
- taskscheduler - 当我选择“运行”时任务运行,但在计划启动时登录失败
- html - html-css 奇怪的行顺序
- javascript - 即使道具显示正确,使用 PropTypes 进行类型检查也会出现错误
- node.js - 标头授权在函数中使用后未定义
- django - 使用 ORM Django 创建数据透视表
- python - 为什么使用 GPU 而不是 CPU 的 tensorflow 更慢?
- javascript - - 不连接js文件
- c# - 以编程方式修改 Visual Studio 项目属性而不修改实际项目文件
- python - 自动上传训练数据标签 csv 和训练处理 AutoML Vision 图像分类中的模型