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