微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决方法 '[]' 在 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 举报,一经查实,本站将立刻删除。