为什么在Dart中toList()会创建一个List?
为什么在Dart中toList()会创建一个List?
我有一个方法,在Dart 2中没有问题地编译。 但是在运行时,我收到以下错误:
类型 \'
List
\' 不是类型 \'List
\' 的子类型
如您在代码中所见,我在.map()
内创建和返回新的ExchangeRate对象,然后在此之后返回rateEntries.toList()
,我希望它是类型List
,但它似乎被推断为类型List
!!!
@override Future<List> getExchangeRatesAt(DateTime time, Currency baseCurrency) async { final http.Client client = http.Client(); final String uri = "some uri ..."; return await client .get(uri) .then((response) { var jsonEntries = json.decode(response.body) as Map<String, dynamic>; var rateJsonEntries = jsonEntries["rates"].entries.toList(); var rateEntries = rateJsonEntries.map((x) { return new ExchangeRate(x.value.toDouble()); }); return rateEntries.toList(); // WHY IS IT RETURNING A List here? }) .catchError((e) => print(e)) .whenComplete(() => client.close()); }
但是,如果我将其明确地强制转换为ExchangeRate,它将是正确的。
return rateEntries.toList().cast();
对我来说,这种最后的强制类型转换似乎是多余的,为什么我需要它呢?
admin 更改状态以发布 2023年5月22日