当我使用 map 函数时,类型 '(dynamic) => dynamic' 不是 'test' 类型 '(dynamic) => bool' 的子类型
type '(dynamic) => dynamic' is not a subtype of type '(dynamic) => bool' of 'test' when I use map function
我有一个带有 LinkedHashMap 成员的 StatefulWidget 小部件,如下所示:
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());
});
}
但是我发现题目有误
type '(dynamic) => dynamic' is not a subtype of type '(dynamic) => bool' of 'test'
其中方法return是一个列表,所以不需要使用toList(),使用时需要指定return类型的map方法。
filter(_items) {
return _items.map<String, List<bool>>((day, items) {
return MapEntry(
day, items.where((i) => i.stringProperty.contains(widget.filter)),
);
});
}
我用这段代码解决了:
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
函数似乎没有 return 布尔值。
我相信这也会起作用,但仍然不确定为什么 return 不是 bool
function filter(_items) {
return _items.map((day, items) {
return new MapEntry(day, items.where((i) {
return (i.stringProperty.contains(widget.filter)) as bool;
}).toList());
});
}
我有一个带有 LinkedHashMap 成员的 StatefulWidget 小部件,如下所示:
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());
});
}
但是我发现题目有误
type '(dynamic) => dynamic' is not a subtype of type '(dynamic) => bool' of 'test'
其中方法return是一个列表,所以不需要使用toList(),使用时需要指定return类型的map方法。
filter(_items) {
return _items.map<String, List<bool>>((day, items) {
return MapEntry(
day, items.where((i) => i.stringProperty.contains(widget.filter)),
);
});
}
我用这段代码解决了:
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
函数似乎没有 return 布尔值。
我相信这也会起作用,但仍然不确定为什么 return 不是 bool
function filter(_items) {
return _items.map((day, items) {
return new MapEntry(day, items.where((i) {
return (i.stringProperty.contains(widget.filter)) as bool;
}).toList());
});
}