【问题标题】:Firestore Document error - Only static members can be accessed in initializersFirestore 文档错误 - 在初始化程序中只能访问静态成员
【发布时间】:2020-05-25 07:54:54
【问题描述】:

我想让用户将产品添加到购物车中。所以我试图获取基于 uid 的文档(名为 uid 的文档) 但我收到错误 初始化器中只能访问静态成员

代码:

class CartDataBase{
 FirebaseUser user;
 final FirebaseAuth _auth=FirebaseAuth.instance;

 void getUid()async
 {
  user=await _auth.currentUser();
 }
 final CollectionReference cart1 = Firestore.instance.collection('users').document(user.uid)//Only static members can be accessed in initializer
.collection('CartProducts');

     List<Checkout> _checkout(QuerySnapshot snapshot) {
      return snapshot.documents.map((doc) {
       return Checkout(
        original: doc.data['original'] ?? 999,
        image: doc.data['image'] ?? 'Error',
        name: doc.data['name'] ?? 'Error',
        quantity: doc.data['Quantity'] ?? 'N/A',
        identifier: doc.data['identifier'] ?? 'qwerty',
        price: doc.data['price'] ?? 999,
        iPP: doc.data['IPP'] ?? 999,
        uPQ: doc.data['UPQ'] ?? 999,
       );
      }).toList();
     }
     Stream<List<Checkout>> get CartProducts {
      return cart1.snapshots().map(_checkout);
     }

    }

Screenshot for reference

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore


    【解决方案1】:

    您的代码中的问题可以在这里找到:

    final CollectionReference cart1 = Firestore.instance.collection('users').document(user.uid).collection('CartProducts');
    

    如果不等待变量完成获取文档,就无法将其分配给变量。在访问它之前,您必须先调用 await 方法。我们可以用await关键字解决这个问题

    final CollectionReference cart1 = await Firestore.instance.collection('users').document(user.uid).collection('CartProducts');
    

    由于你不能在你的类中调用异步,你必须将它转换成一个函数,并在你的 ui 构建之前调用 initstate() 中的函数。

    getDetails() async {
     final CollectionReference cart1 = await Firestore.instance.collection('users').document(user.uid).collection('CartProducts');
     //other things here
    }
    
    //place this below your widget build
    @override
    void initState() {
      getDetails();
      super.initState();
    }
    

    【讨论】:

    • 没有异步我不能使用等待,我也不能在这个类中添加异步
    猜你喜欢
    • 2020-08-31
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2020-01-03
    • 2020-10-26
    • 2019-01-23
    相关资源
    最近更新 更多