当我使用地图功能时,类型'(dynamic)=>动态'不是'test'类型'(dynamic)=> bool'的子类型

时间:2019-12-15 11:31:53

标签: flutter dart widget statefulwidget

我有一个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'的子类型

3 个答案:

答案 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());
    });
}