繁体   English   中英

从 flutter 中的动态列表生成数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM