从颤振中的动态列表生成数组



嗨,我开始与扑动工作,现在我有以下问题。我从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,
]);
}
}

这是我在函数中尝试的一个例子,我需要生成的新数组,最后我需要得到一个像这样的数组:

final listArray = [
[
'1',
'Coffee',
'10',
'10,
],
[
'2',
'Blue Berries',
'30',
'60'
],
];

我没有太多的工作与收集或数据列表在扑动,我得到以下错误:The argument type 'List<dynamic>' can't be assigned to the parameter type 'List<List<dynamic>>'.知道我该怎么解决吗?谢谢你

您正在向列表(listArray)中插入列表项。

转换var listArray = [];List<List<dynamic>> listArray

由于我没有完全理解上下文,我有另一个建议。

这个错误可能是由以下原因引起的:

无论在何处调用生成函数,都将List<List作为List类型形参的实参传递给它。>

所以请检查你调用生成函数的地方,确保你传递的参数是预期的/正确的类型。

查看您的代码,问题似乎如下

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,
]);
}
}```

最新更新