我尝试使用Map.entries.firstWhere方法获取一个值,但我认为我写的是正确的,但dart抛出类型错误
final langList = {
null: "disabled",
"ko": '한국어',
"de": 'Deutsch',
"ru": 'русский',
"vi": 'Tiếng Việt',
...
}.entries.toList();
// in build method
Text(
langList
.firstWhere(
(element) =>
element.key ==
translateClientKeyMap[user.clientKey],
orElse: () =>
const MapEntry<String?, String>(
null, "disabled"),
)
.value,
style: const TextStyle(
color: Color(0xff000000),
fontSize: 10.0,
),
)
但是 dart _TypeError (type '() => MapEntry<String?, String>' is not a subtype of type '(() => MapEntry<String, String>)?' of 'orElse')
我想我选择了正确的类型,但 dart 投掷类型错误
有什么问题吗?
1条答案
按热度按时间wqsoz72f1#
问题是firstWhere方法的
orElse
参数期望返回MapEntry<String, String>
的回调函数,但您提供的函数返回MapEntry<String?, String>
。要解决这个问题,您可以更改orElse函数的签名以返回
MapEntry<String, String>
,希望它能正常工作