我有两个看起来像这样的对象:
class Field extends RESTModel {
int id;
String name;
String dataType;
int objectId;
}
class FieldKeywordMap extends RESTModel {
int id;
String keywordName;
int objectConfigurationId;
int fieldId;
}
Run Code Online (Sandbox Code Playgroud)
我有一个名为 _fieldKeywordMaps 的 FieldKeywordMap 列表和一个名为 _selectedFields 的字段列表。我正在编写一个函数来根据两个条件返回 _fieldKeywordMaps 的过滤版本:
基于第一个条件的过滤有效,但我无法确定如何迭代我的 _selectedFields 列表并将其与 _fieldKeywordMaps 中的对象进行比较。这是代码:
selectObjectKeywordMaps() async {
if (selectedObjectConfiguration() != null && selectedObject() != null) {
List<FieldKeywordMap> _maps = _fieldKeywordMaps
.where((keywordMap) =>
keywordMap.objectConfigurationId == selectedObjectConfiguration().id)
.where((filteredKeywordMap) =>
_selectedFields.map((field) => field.id).contains(filteredKeywordMap.id))
.toList();
_selectedObjectKeywordMaps = _maps.toList();
fetchAffectedCustomers();
} else {
_selectedObjectKeywordMaps = [];
}
notifyListeners();
}
Run Code Online (Sandbox Code Playgroud)
.where((filteredKeywordMap) => _selectedFields.map(...))
是不合适的。Iterable.map
当您想要执行从一个Iterable
到另一个的 1:1 转换时使用。
相反,你可以这样做:
.where((filteredKeywordMap) => _selectedFields.any((field) => field.id == filteredKeywordMap.fieldId))
请注意,这可能效率低下。如果你_selectedFields
从s 到s 而不是s,那么查找会更快更简单Map
。id
Field
List<Field>
归档时间: |
|
查看次数: |
3571 次 |
最近记录: |