【问题标题】:Expected a value of type 'int', but got one of type 'String' in Flutter DataTable需要一个“int”类型的值,但在 Flutter DataTable 中得到一个“String”类型的值
【发布时间】:2021-03-16 02:43:38
【问题描述】:

我正在使用以下代码从地图创建数据表:

DataTable(
              columns: const <DataColumn>[
                                          DataColumn(label: Text('Name')),
                                          DataColumn(label: Text('Address')),
                                          DataColumn(label: Text('Phone')),
                                          ],
              rows: dictRoute.entries
                            .map((e) => DataRow(cells: [
                                          DataCell(Text(camelize(e.value['name'].toString()))),
                                          DataCell(Text(e.value['address'].toString())),
                                          DataCell(Text(e.value['phone'].toString())),])).toList(),
            ),

DataCells 不断给我以下错误:

我发现问题出在 e.value[''] 部分,它说它需要一个 int。为什么它会期待一个int?当我只打印出 e.value 时,每个条目都会得到类似的结果:

{email: homer@gmail.com, note: 13-208, name: homer simpson, address: 742 Evergreen Terrace, phone: +15555555555}

【问题讨论】:

  • 我认为这是因为e.value[]Array,所以你应该传递一个索引(这是一个Int。但是你传递了一些字符串,e.value['some string']。我不确定正是因为提供的代码太少了

标签: flutter dart


【解决方案1】:

我认为这个问题的原因是每个条目的值是一个 String 类型,而不是 Map 类型。

您可以尝试将其转换为 JSON:

dictRoute.entries.map((e) {
  Map _ = json.decode(e.value);
  return DataRow(cells: [
    DataCell(Text(_['name'].toString())),
    DataCell(Text(_['address'].toString())),
    DataCell(Text(_['phone'].toString())),
  ]);
}).toList())

如果不行,希望你能提供dictRoute的代码。

【讨论】:

    【解决方案2】:

    当使用Map.entries.map((e) =&gt; T) 时,e 是一个 MapEntry 对象,其 Key 和 Value 的类型定义为 Map 对象。

    正如@hisam 刚刚在 cmets 中所说,您可能将 Map 的值设置为数组,因此 e.value 是数组类型,但是您将 String 键传递给它,这在数组中是不可能的。

    Map<String, List> map;
    
    map.entries.map((e) {
      // Because map is a Map<String, List>, e is a MapEntry<String, List>
      // Which means e.key is String and e.value is a List
    });
    

    如果您确定 e.value 是 Map 类型,它应该没有问题。

    【讨论】:

    • e.value 是一个 Map,除了一个字段不是。不知何故,一个随机键/值被添加到 dictRoute 不是 Map 并且导致错误。现已修复。
    【解决方案3】:

    dictRoute 中显示了一个非 Map 类型的杂散键/值,这导致了错误。 dictRoute 是一个非常大的嵌套映射,所以我没有看到正在添加的随机键/值对。现在都修好了。

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 2021-11-26
      • 2022-12-05
      • 2022-01-08
      • 2021-09-18
      • 2021-09-13
      • 2020-12-03
      • 2021-11-02
      • 2021-07-13
      相关资源
      最近更新 更多