我已成功使用Flutter设置了应用程序,并进行了注册并使用Firebase身份验证登录。
登录后,我回到主屏幕,在该屏幕上我得到用户:
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
final FirebaseAuth _auth = FirebaseAuth.instance;
FirebaseUser user;
@override
void initState() {
super.initState();
initUser();
}
initUser() async {
user = await _auth.currentUser();
setState(() {});
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
//appBar: AppBar(title: const Text("Run to Feel Better")),
body: Center(
child: Column(
children: <Widget>[
if (user == null)
RoundedButton(
buttonTitle: 'Crea un account',
color: kRTFBBlue,
onPressedFunction: () {
Navigator.pushNamed(context, '/account');
},
)
else
Text("${user?.email}"),
],
),
),
bottomNavigationBar: bottomBar(context, 0),
), // /widgets/home_scaffold.dart
);
}
}
因此,一切正常,但是我的问题是:让当前用户进入其他页面的正确方法是什么?我是否需要使用FirebaseAuth.instance重新检查每个屏幕,还是可以保存它并在页面之间共享(也许使用提供程序包)?
非常感谢你。
最佳答案
当然,您可以同时执行两种操作,即可以使用state management将FirebaseAuth
实例存储在某个位置,但是,您也可以一直调用FirebaseAuth.instance
。
我能想到的唯一有值(value)的见解是,调用FirebaseAuth.instance
完全可以(不是特别昂贵)-其他所有内容可能完全基于观点。