dart map.entries.firstWhere抛出类型错误

7z5jn7bk  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(100)

我尝试使用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 投掷类型错误
有什么问题吗?

wqsoz72f

wqsoz72f1#

问题是firstWhere方法的orElse参数期望返回MapEntry<String, String>的回调函数,但您提供的函数返回MapEntry<String?, String>
要解决这个问题,您可以更改orElse函数的签名以返回MapEntry<String, String>,希望它能正常工作

orElse: () =>
            const MapEntry<String, String>(
                null, "disabled"),

相关问题