空安全和地图

Thi*_*rry 5 dart flutter dart-null-safety

您如何处理以下情况:

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]!; 
}
Run Code Online (Sandbox Code Playgroud)

myMap[key]永远不会为空,但如果我删除 of ,!则会return myMap[key]!;出现空安全错误:

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

用 抛弃可空性是否正确!,或者是否有更干净的方法?

Chr*_*ore 3

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

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

int getInt(String key) {
  myMap[key] ??= 0;
  return myMap[key]!; 
}
Run Code Online (Sandbox Code Playgroud)