我有一个StatefulWidget小部件,其中的LinkedHashMap成员是这样完成的:
LinkedHashMap _items = new LinkedHashMap<String, List<dynamic>>();
现在,我需要过滤“ List<dynamic>
”项中的项。
我使用以下代码进行过滤:
function filter(_items) {
return _items.map((day, items) {
return new MapEntry(day, items.where((i) {
return i.stringProperty.contains(widget.filter);
}).toList());
});
}
但是我在主题上弄错了
类型'(dynamic)=>动态'不是'test'类型'(dynamic)=> bool'的子类型
答案 0 :(得分:1)
我用以下代码解决了
function filter(_items) {
return _items.map((day, items) {
return new MapEntry(day, items.where((i) {
return i.stringProperty.contains(widget.filter) ? true : false;
}).toList());
});
}
似乎contains
函数没有返回布尔值。
答案 1 :(得分:0)
Where方法返回一个列表,因此您不需要使用toList(),并且在使用它时应该指定map方法的返回类型。
filter(_items) {
return _items.map<String, List<bool>>((day, items) {
return MapEntry(
day, items.where((i) => i.stringProperty.contains(widget.filter)),
);
});
}
答案 2 :(得分:0)
我相信这也可以,但仍不确定为什么它不返回布尔值
function filter(_items) {
return _items.map((day, items) {
return new MapEntry(day, items.where((i) {
return (i.stringProperty.contains(widget.filter)) as bool;
}).toList());
});
}