如何在 Flutter dart 的列表中的循环内附加数据?

Posted

技术标签:

【中文标题】如何在 Flutter dart 的列表中的循环内附加数据?【英文标题】:How to append data inside loop in list in Flutter dart? 【发布时间】:2021-05-31 19:48:52 【问题描述】:

我是 Flutter 飞镖语言的新手。我正在尝试插入一个搜索小部件,我需要创建一个列表,其中包含从外部 API 调用解析的所有 JSON 值。我能够从 API 获取数据,但我想不出一种方法来将此动态数据附加到我创建的用于解析单个值的构造函数类中。

我收到的 API 输出数据如下所示

  [name: nikhil, uploadID: dfkjakds1213, name: nikhil, uploadID:
     dfkjakds1213, name: nikhil, uploadID: dfkjakds1213, name: nikhil,
     uploadID: dfkjakds1213, name: nkks, uploadID: szjxb771, name:
     nkks, uploadID: szjxb771...]

现在我想将这个二维列表添加到 myclass 列表中,我不知道该怎么做? myclass 列表看起来像这样,带有静态数据

List<myclass> words = [
    myclass("nikhil", "adnfk"),
    myclass("john", "asdfadsf"),
    myclass("smith", "adf"),
    myclass("stuart", "asdfdf"),
  ];

我想使用一些循环或类似的东西使其动态化

class myclass 
          String name;
          String uploadid;
        
          myclass(this.name, this.uploadid);
        
getvalue() 
        AuthService().getallStaff("staff", "all").then((val) 
          
         List<myclass> words = [
            for (var item in val.data)
              
                myclass(item['name'], item['uploadid']),
              
          ];
        );
    
      

但我收到此错误

 The element type 'Set<myclass>' can't be assigned to the list type 'myclass'

我该如何解决这个问题?

【问题讨论】:

collection-for 构造与表达式一起使用,而不是语句,因此您不能为其使用大括号(除非您尝试创建 Set 文字,这就是它的解释方式这里)。取下大括号。 【参考方案1】:

数组内的for循环不允许使用。它将变成items => 一组物品

你case的结果会变成数组中的一组myclass:

List<myclass> words = [
  
    myclass("nikhil", "adnfk"),
    myclass("john", "asdfadsf"),
    ...
  
]

你可以删除 :

List<myclass> words = [
  for (var item in val.data)
    myclass(item['name'], item['uploadid']),
];

或使用map(一对一):

List<myclass> words = val.data.map((item)=>myclass(item['name'],item['uploadid'])).toList();

【讨论】:

以上是关于如何在 Flutter dart 的列表中的循环内附加数据?的主要内容,如果未能解决你的问题,请参考以下文章

识别二维列表是不是包含 Dart/Flutter 中的列表

Dart/Flutter 中的依赖关系图?

如何使用 dart/flutter 中的共享首选项保存和获取列表列表

在 Flutter 中使用 Dart,如何添加到地图列表中的地图列表中?

如何使用 Dart / Flutter 中的列表从列表中删除重复元素?

(Flutter/Dart) 如何修复使用 [ ] 显示列表中的数字