gpt4 book ai didi

firebase - 将FirebaseUser映射到自定义User对象

转载 作者:行者123 更新时间:2023-12-03 04:21:31 28 4
gpt4 key购买 nike

我有一个Flutter应用程序,正在其中使用StreamProvider监听Firebase的身份验证更改以显示正确的屏幕。我想做的是将FirebaseUser映射到自定义User对象(该对象将从Firestore检索),以使其从小部件树中的任何位置均可访问。

有什么办法可以做到这一点?

我现在正在做什么:

class AuthService {
final FirebaseAuth _auth = FirebaseAuth.instance;

Stream<FirebaseUser> get user {
return _auth.onAuthStateChanged;
}
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamProvider<FirebaseUser>.value(
value: AuthService().user,
child: MaterialApp(...)

最佳答案

首先,从定制模型开始,并确定您想要的东西,在这种情况下,我将简单地获得uid

用户模型

 class User {
final String uid;

User({ this.uid });
}

验证服务
// Create user object based on FirebaseUser
User _customModelForFirebaseUser(FirebaseUser user) {
return user != null ? User(uid: user.uid) : null;
}

// auth changed user stream
Stream<User> get user {
return _auth.onAuthStateChanged
.map(_customModelForFirebaseUser)
}

我的应用程式
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamProvider<User>.value(
value: AuthService().user,
child: MaterialApp(
home: Wrapper(),
),
);
}
}

然后,您可以从任何地方访问它,如下所示:
 @override
Widget build(BuildContext context) {

final user = Provider.of<User>(context);
}

关于firebase - 将FirebaseUser映射到自定义User对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62325215/

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