Dart / Flutter 条件命名参数

时间

在 Javascript 中,要有条件地向对象添加值,我可以执行以下操作:

const obj = {
   ...(myCondition && {someKey: "someValue"})
}

我可以做一些类似于在 Dart / Flutter 中传递命名参数的事情吗?例如,如果我有下面的代码,有没有办法有条件地传递place参数,只有当它存在于json传递给fromJson工厂函数中时。

factory SearchResult.fromJson(Map<String, dynamic> json) {
    return SearchResult(
      id: json['id'],
      displayString: json['displayString'],
      name: json['name'],
      recordType: json['recordType'],
      collection: json['collection'],
      place: GeoJson.fromJson(json['place']),
      properties: json['properties']
    );
  }
理查德·安布勒

您可能正在寻找 Dart 的集合运算符,特别是collection-ifcollection-for功能。

例如,您可以执行以下操作:

final map = {
  'key1': 'value1',
  'key2': 'value2',
  if (myCondition) 'key3': 'value3'
};

这也适用于列表:

final list = ['value1', 'value2', if (myCondition) 'value3']; 

在这种情况下,您可能会追求以下方面的内容:

final keys = [
  'id',
  'displayString',
  'name',
  'recordType',
  'collection',
  'place',
  'properties'
],
obj = {for (final key in keys) if (json.containsKey(key)) key: json[key]};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章