![](/img/trans.png)
[英]Flutter Convert from QuerySnapshot to a Future <List<Map<dynamic, dynamic>>>
[英]generate array from a dynamic list in flutter
嗨,我开始使用 flutter,现在我遇到了以下问题。 我得到一个动态列表是来自firebase
的集合,我需要从这个列表创建一个新的数据数组,我正在尝试这样的事情:
static Future<File> generate(List<dynamic> products) async {
var listArray = [];
for (var i = 0; i < products.length; i++) {
listArray.add([
products[i].quantity,
products[i].name,
products[i].price,
products[i].price,
]);
}
}
这是我在 function 中尝试过的示例以及我需要生成的新数组,最后我需要得到一个如下所示的数组:
final listArray = [
[
'1',
'Coffee',
'10',
'10,
],
[
'2',
'Blue Berries',
'30',
'60'
],
];
我没有对 collections 或 flutter 中的数据列表进行太多处理,但出现以下错误: The argument type 'List<dynamic>' can't be assigned to the parameter type 'List<List<dynamic>>'.
知道我该如何解决这个问题吗? 谢谢
您正在列表(listArray)中插入列表项。
转换var listArray = [];
进入List<List<dynamic>> listArray
由于我没有完全了解上下文,我有另一个建议。
此错误可能是由以下原因引起的:
无论您在哪里调用 generate function,您都将其传递给 List<List 作为类型为 List 的参数的参数。
因此,请检查您调用生成 function 的位置,确保您传递的参数具有预期/正确的类型。
查看您的代码,问题似乎如下
static Future<File> generate(List<dynamic> products) async {
var listArray = [];//Here type inference make listArray a 'List<dynamic>'
for (var i = 0; i < products.length; i++) {
listArray.add([ //Here you add an array to your array, hence the 'List<List<dynamic>>'
products[i].quantity,
products[i].name,
products[i].price,
products[i].price,
]);
}
}
这可以通过使用这样的强制类型来修复:
static Future<File> generate(List<dynamic> products) async {
//Here you declare the type as List<List<dynamic>>
//(growable: true is needed to allow to add new element to it)
List<List<dynamic>>listArray = List<List<dynamic>>.empty(growable: true);
for (var i = 0; i < products.length; i++) {
listArray.add([
products[i].quantity,
products[i].name,
products[i].price,
products[i].price,
]);
}
}```
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.