_CompactIterable<String> 不是“String”类型的子类型

问题描述 投票:0回答:1

我在地图值列表中保存了一些值。

List<Map<String, String>> savedValues = [];

现在,我想提取列表中的这些值和键。我想将它们提取为字符串。当我尝试执行此操作并尝试在 ListView.builder() 中显示这些值时,我收到了如上所述的错误。

我正在做这个。

    List _values = [];
    List _keys = [];

    for (var value in savedValues) 
       {
         _values.add(value.values);
         _keys.add(value.keys);
       }

我尝试了不同的解决方案,但不明白该怎么做。请问有什么帮助吗?

flutter dart
1个回答
0
投票

您需要学习使用正确的类型,以便编译器可以告诉您哪里出错了。

您的列表是无类型的,这意味着它们是某物的列表。当您添加到列表时,您将添加一组值作为一个整体。因此,您不会将字符串填充到字符串列表中,而是将“字符串串”填充到某些内容的列表中,这显然意味着“字符串串”列表。嗯,不是那个意思。让我们尝试使用正确的类型:

final _values = <String>[];
final _keys = <String>[];

for (var value in savedValues) 
{
  _values.addAll(value.values);
  _keys.addAll(value.keys);
}

使用正确的类型,您的“add”而不是“addAll”行将为您带来编译错误,通知您“add”不会执行您认为的操作。

© www.soinside.com 2019 - 2024. All rights reserved.