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();
}
}
我正在我的 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();
}
}