gpt4 book ai didi

跨应用程序的 Flutter Firebase 用户身份验证管理

转载 作者:IT老高 更新时间:2023-10-28 12:46:32 24 4
gpt4 key购买 nike

我已成功实现用户身份验证,一切正常,我只想管理 currentUser以一种有效的方式。

我想登录一次并想访问 currentUser随时在应用中。

FirebaseAuth.instance.currentUser()

Future<FirebaseUser> ,我想立即获得,我无法弄清楚如何管理这个,我认为不需要为此添加代码,我只是在寻求一个想法。

最佳答案

正如 Sebastian 所说,您应该查看 Provider或任何其他状态管理工具/模式,但对于我将要使用的示例,您将需要 Provider 包。

Firebase Auth 有一个 onAuthStateChanged 流,如果用户登录则发出当前 FirebaseUser,如果未登录则发出 null。所以你可以做的是用 StreamProvider 包装您的 MaterialApp 并在您的应用程序的任何屏幕中访问您的用户信息

例子:

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
Widget build(BuildContext context) {
return StreamProvider<FirebaseUser>( //From the Provider package
stream: FirebaseAuth.instance.onAuthStateChanged,
child: MaterialApp(
home: MyScreen(),
),
);
}
}


class MyScreen extends StatelessWidget {
Widget build(BuildContext context) {
FirebaseUser fbUser = Provider.of<FirebaseUser>(context); // this is how you can access the user from anywhere in the app
return Scaffold(body: Container(child: Text(fbUser.uid ?? "No user"),),);
}
}

值得注意的是,onAuthStateChanged 是流式的,因此如果发生注销或登录事件,它会立即根据该事件发出数据。

关于跨应用程序的 Flutter Firebase 用户身份验证管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56497465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com