我一直试图弄清楚如何查询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);
}
}
答案 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
}