首页 > 解决方案 > 空安全和地图

问题描述

您如何处理以下情况:

void main() {
  print(getInt('d'));
}

Map<String, int> myMap = {'a':1, 'b':2, 'c':3};

int getInt(String key) {
  if (!myMap.containsKey(key)) {
    myMap[key] = 0;
  }
  return myMap[key]!; 
}

myMap[key]永远不会为空,但如果我删除!ofreturn myMap[key]!;我会得到空安全错误:

'int?' 类型的值 无法从函数“getInt”返回,因为它的返回类型为“int”。

用 丢弃可空性是否合适!,还是有更清洁的方法?

标签: flutterdartdart-null-safety

解决方案


不确定清洁剂是什么意思,并且!确实存在是有原因的。

您可以将该 if 语句简化为一行:

int getInt(String key) {
  myMap[key] ??= 0;
  return myMap[key]!; 
}

推荐阅读