【问题标题】:How to append data inside loop in list in Flutter dart?如何在 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 文字,这就是它的解释方式这里)。取下大括号。

标签: list loops flutter dart flutter-layout


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 2019-08-07
    • 2020-04-25
    • 2019-08-20
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多