【问题标题】:A value of type 'List<dynamic>' can't be assigned to a variable of type 'List<String>'“List<dynamic>”类型的值不能分配给“List<String>”类型的变量
【发布时间】:2022-01-09 19:17:41
【问题描述】:
Future<String> _loadCurrencies() async {
  String uri = "http://api.exchangeratesapi.io/latest?access_key=apikey";
  var response =
      await http.get(Uri.parse(uri), headers: {"Accept": "application/json"});
  var responseBody = json.decode(response.body);
  Map curMap = responseBody['rates'];
  currencies = curMap.keys.toList();
  setState(() {});
  print(currencies);
  return "Success";
}

显示错误A value of type 'List&lt;dynamic&gt;' can't be assigned to a variable of type 'List&lt;String&gt;'.

起初,我尝试了as Map,但我似乎无法解决这个错误。

【问题讨论】:

标签: flutter dart


【解决方案1】:

问题

当你这样做时

Map curMap = responseBody['rates'];
currencies = curMap.keys.toList();

curMapMap&lt;dynamic, dynamic&gt;curMap.keys()Iterable&lt;dynamic&gt;。由于currenciesList&lt;String&gt;,因此您不能将其分配给curMap.keys().toList()

解决方案

改成

Map<String, dynamic> curMap = responseBody['rates'];
currencies = curMap.keys.toList();

【讨论】:

    【解决方案2】:

    如果你确定它会有字符串,你可以这样做

    currencies = curMap.keys.toList().cast<String>();
    

    【讨论】:

      【解决方案3】:

      将键转换为字符串

      currencies = curMap.keys.map(e => e.toString()).toList();
      

      【讨论】:

        猜你喜欢
        • 2022-12-17
        • 1970-01-01
        • 2021-09-15
        • 2021-10-18
        • 2022-08-23
        • 2021-08-29
        • 2021-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多