问题描述
我需要从 Firebase 检索用户数据并使用构建器将数据传递到 UI。当我运行应用程序时,I 方法在 Null 上被调用。
我尝试了很多方法来调用 firebase 数据,但我一直收到有关提供程序或调用数据为 NULL 的错误消息。
错误很可能来自下面的 _getProfileData() 方法。
_getProfileData(AuthNotifier authNotifier) async {
final uid = await Provider.of(context,listen: false).authNotifier.getCurrentUID();
await Provider.of(context,listen: false)
.collection('Users')
.document(uid)
.get().then((result) {
user.isAdmin = result.data['isAdmin'];
});
}
当我使用 Provider 进行以下更改时,会出现另一个错误,即 Provider 不工作。
final uid = await Provider.of<authNotifier>(context,listen: false).getCurrentUID();
我将 getter 放在 API 中。
final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
// GET UID
Future<String> getCurrentUID(User user,AuthNotifier authNotifier) async {
return (await _firebaseAuth.currentUser()).uid;
}
// GET CURRENT USER
Future getCurrentUser(User user,AuthNotifier authNotifier) async {
return await _firebaseAuth.currentUser();
}
Stream<String> get onAuthStateChanged => auth.onAuthStateChanged.map(
(FirebaseUser user) => user?.uid,);
我按照如下方式构建了用户数据。
class User {
List favorites = [];
String documentID;
String displayName;
String email;
String password;
bool isAdmin;
User({
this.favorites,this.documentID,this.displayName,this.email,this.password,this.isAdmin,});
factory User.fromFirestore(DocumentSnapshot document) {
Map data = document.data;
return User(
favorites: data['favorite'] ?? [],documentID: document.documentID,displayName: data['displayName'] ?? '',email: data['email'] ?? '',isAdmin: data['isAdmin'] ?? false,);
}
// get admin => null;
Map<String,dynamic> toMap() {
return {
'displayName': displayName,'email': email,'isAdmin': isAdmin,};
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)