return 类型 'dynamic' 不是闭包上下文所要求的 'bool'

The return type 'dynamic' isn't a 'bool', as required by the closure's context

我正在我的 flutter 应用中实现搜索栏。但是行 _allUsers.where((user) => user["name"].toLowerCase().contains(enteredKeyword.toLowerCase())).toList(); 抛出一个错误:'The return type 'dynamic' isn't a 'bool', as required by the closure's context.' 有代码:

  final List<Map<String, dynamic>> _allUsers = [
    {"id": 1, "name": "Andy", "type": "student"},
    {"id": 2, "name": "Aragon", "type": "student"},
    {"id": 3, "name": "Bob", "type": "student"},
    {"id": 4, "name": "Barbara", "type": "teacher"},
    {"id": 5, "name": "Candy", "type": 'student'},
  ];
  void _runFilter(String enteredKeyword) {
    List<Map<String, dynamic>> results = [];
    if (enteredKeyword.isEmpty) {
      results = _allUsers;
    } else {
      results = _allUsers.where((user) => user["name"].toLowerCase().contains(enteredKeyword.toLowerCase())).toList();
    }
  }

当我尝试 运行 时,此代码在 dartpad.dev 中有效,但在 Android Studio 中无效。

当您从地图中获取值时,尝试添加一个转换。现在,类型是 dynamic (因为地图已经以这种方式声明)这意味着类型安全被丢弃:

  void _runFilter(String enteredKeyword) {
    List<Map<String, dynamic>> results = [];
    if (enteredKeyword.isEmpty) {
      results = _allUsers;
    } else {
      results = _allUsers
          .where((user) => (user["name"] as String)
              .toLowerCase()
              .contains(enteredKeyword.toLowerCase()))
          .toList();
    }
  }