如何从Firestore中获取文档集合并将其变成扑朔迷离的清单?

时间:2020-07-30 06:33:16

标签: firebase flutter

我一直试图弄清楚如何查询Firestore并将输出保存到列表中,以便可以在应用程序的另一部分中使用它。

我尝试将其保存到列表中,但出现“未处理的异常:类型'double'不是类型为'List dynamic'的子类型”。

然后我尝试将其保存为列表,但随后出现“未处理的异常:类型'double'不是类型为'List double'的子类型

我也尝试将其输出为地图,但我认为我在那里丢失了一些东西,因为它无法编译。

功能如下:

setMainDebt()async{
    final uid = await Provider.of(context).auth.getCurrnetUid();
    final fireStoreData = await db.collection('userDebts').document(uid).collection('debts').orderBy('balance').getDocuments();
    for(var theData in fireStoreData.documents){
        final List<double> value = theData.data['balance'];
        print(value);    
    }    
  }

3 个答案:

答案 0 :(得分:1)

我认为您正在尝试直接将Double值分配给List。您应该添加它们。

List<double> list=[];

final fireStoreData = await db.collection('userDebts').document(uid).collection('debts').orderBy('balance')

fireStoreData.getDocuments().then((val)=>{ val.documents.forEach((doc)=>{ list.add(doc.data['balance']) }) });

答案 1 :(得分:0)

当您调用Data.data ['balance'](可以是DocumentReference而不是var)时,似乎会得到一个双精度值列表,而不是双精度值。检查您的数据库。您必须将其存储为列表。要克服这一点,请像这样编辑代码。

 for(var theData in fireStoreData.documents){
      for (List l in theData.data['balance']){
        final List<double> value = l;
        print(value);    
    }    
}

答案 2 :(得分:0)

您可以制作一个List<double>,然后在其中添加数据,然后在需要的地方使用它。 您当前遇到错误,因为您无法在double类型中分配List类型值

尝试:

Future<List<double>>setMainDebt()async{
    List<double> list=[]; // make an empty list
    final uid = await Provider.of(context).auth.getCurrnetUid();
    final fireStoreData = await db.collection('userDebts').document(uid).collection('debts').orderBy('balance').getDocuments();
    for(var theData in fireStoreData.documents){
        list.add(theData.data['balance'] as double); // typecast data as double and add it in list
        print(value);    
    }    
    return list; // return list
  }