gpt4 book ai didi

firebase - Flutter Firebase onAuthStateChanged

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

我正在使用Firebase身份验证和Firestore数据库创建一个flutter应用程序,以存储用户个人资料。
验证用户身份后,我想将用户的个人资料文档作为流获取,并提供给所有小部件使用。
这是我的代码:

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
StreamProvider<FirebaseUser>.value(
value: FirebaseAuth.instance.onAuthStateChanged),
StreamProvider<Profile>.value(value: DatabaseService().getProfile()),
],
child: MaterialApp(
title: 'App Title',
theme: customTheme(),
home: Wrapper(),
));
}
}
在数据库服务内部,我有。
 Stream<Profile> getProfile() {

final CollectionReference profileCollection =Firestore.instance.collection('profiles');

Stream<FirebaseUser> user = FirebaseAuth.instance.onAuthStateChanged;

user.listen((event) {
profileCollection.document(event.uid).get().then((value) {
return Profile.fromJson(value.data);
});
});

return null;
}
问题是 getProfile 方法始终返回null。

最佳答案

将方法更改为以下内容:

  Future<Profile> getProfile() async* {
final CollectionReference profileCollection = Firestore.instance.collection('profiles');
FirebaseUser user = await FirebaseAuth.instance.currentUser();
var value = await profileCollection.document(user.uid).get();
return Profile.fromJson(value.data);
}
返回 currentUser()Future将为您提供有关当前登录用户的信息,然后您可以获取 uid并在文档中使用它。

关于firebase - Flutter Firebase onAuthStateChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63099228/

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