【问题标题】:Flutter: I need a hand with dart obj and mappingFlutter:我需要 dart obj 和映射的帮助
【发布时间】:2019-10-26 04:17:09
【问题描述】:

我是从 Dart 和 Flutter 开始的。我已经掌握了一些窍门。但有一件事阻碍了我。这让我有点困惑。

考虑到这个要点https://gist.github.com/MichelDiz/9af4e74f2a8c83cdb592257678e1cf71

问题是,我需要基于要点中的 JSON 创建小部件。这个 JSON 与“常见”的有点不同(所以我在互联网上找不到类似的例子)。它是对象树而不是地图。但是,我需要映射以动态创建小部件。而且似乎课程不适合。而且我没有太多为 JSON 文件创建复杂类的经验。

我使用https://app.quicktype.io/ 创建了基础类。

所以下面这段代码是我的阻塞:

  return Center(
      child: Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
      ...(resp.groups as List<Group>).map((group) {
        //print(group);
        return  GroupBody();
      })//.toList()
      // GroupBody(),
      // GroupBody(),
    ],
  ));

还有错误

flutter: The following _CastError was thrown building StreamBuilder<StateResponse>(dirty, state:
flutter: _StreamBuilderBaseState<StateResponse, AsyncSnapshot<StateResponse>>#21e11):

这是主要错误

flutter: type '_InternalLinkedHashMap<String, Group>' is not a subtype of type 'List<dynamic>' in type cast

我只是为每个“组”和每个“零”创建一堆卡片。在 JSON 中,我有 6 个组和 3 个零。所以6张组卡和3张零卡。

就是这样。

干杯。并感谢您的介意。

PS。此外,如果我切断代码并只输入(data.groups as List).map((group) =&gt; print(group));,错误仍然会发生。

【问题讨论】:

    标签: json flutter dart


    【解决方案1】:

    而不是这个:

    children: <Widget>[
          ...(resp.groups as List<Group>).map((group) {
            //print(group);
            return  GroupBody();
          })
    

    你可以这样做:

    children: resp.groups.values.map((group) {
            //print(group);
            return  GroupBody();
          }).toList()
    

    group 是一张地图,您可以像这样访问它:

    group['members']['1']
    

    【讨论】:

    • 没办法,The argument type 'MapEntry&lt;?, ?&gt; Function(String)' can't be assigned to the parameter type 'MapEntry&lt;dynamic, dynamic&gt; Function(String, Group)'.dart(argument_type_not_assignable)
    • 我更新了我的答案。您可以遍历 resp.groups 的值列表。
    • 谢谢!就是这个!这个“价值观”完全不同。上面有一些文档吗?
    • 你可以在这里查看 Map 类的 values 属性:api.dart.dev/stable/2.6.0/dart-core/Map-class.html
    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 2019-02-12
    • 2011-01-06
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多