dart Map 中的默认值

C.P*_*P.O 7 dart

有没有办法从 dart 中的 Map 获取默认值(如 Java):

static Map DEFAULT_MAPPING = Map.unmodifiable({
    "k1": "value"
});

DEFAULT_MAPPING['k1'] //get 'value'

DEFAULT_MAPPING.getOrElse('non-present-key', 'default-value') //something like Java has
Run Code Online (Sandbox Code Playgroud)

Ale*_*uin 19

如果您的地图不包含空值,您可以使用if null 运算符

var map = {
  'a': 1,
  'b': 2,
};
var cValue = map['c'] ?? 3;
Run Code Online (Sandbox Code Playgroud)

或者,您可以定义自己的扩展方法:

extension DefaultMap<K,V> on Map<K,V> {
  V getOrElse(K key, V defaultValue) {
    if (this.containsKey(key)) {
      return this[key];
    } else {
      return defaultValue;
    }
  }
}

var map = {
  'a': 1,
  'b': 2,
};
var cValue = map.getOrElse('c', 3);
Run Code Online (Sandbox Code Playgroud)