方法 '[]' 在 null 上被调用:firebase flutter

问题描述

我需要从 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 (将#修改为@)