类型“Null”不是类型转换中“bool”类型的子类型
Posted
技术标签:
【中文标题】类型“Null”不是类型转换中“bool”类型的子类型【英文标题】:type 'Null' is not a subtype of type 'bool' in type cast 【发布时间】:2021-10-22 18:25:27 【问题描述】:我在颤振中创建了一个 Map
//this is the code
Map<String, bool> _userFilters =
"gluten": false,
"lactose": false,
"vegan": false,
"vegetarian": false,
;
List<Meal> filteredMeal = DUMMY_MEALS;
void saveFilters(Map<String, bool> filteredData)
setState(()
_userFilters = filteredData;
filteredMeal = DUMMY_MEALS.where(
(meal)
if (_userFilters['gluten']as bool) // _userFilter['gluten'] is giving error
return false;
if (_userFilters['lactose']as bool)
return false;
if (_userFilters['vegan']as bool)
return false;
if (_userFilters['vegetarian'] as bool)
return false;
return true;
,
).toList();
);
enter image description here
【问题讨论】:
【参考方案1】:无需将您的地图条目转换为布尔值。在变量末尾使用感叹号(例如 _usedFilters['gluten']!
)将其视为不可为空。
像这样重写所有条件(如果您确定该值不会为空):
if (_userFilters['gluten']!)
return false;
if (_userFilters['lactose']!)
return false;
if (_userFilters['vegan']!)
return false;
if (_userFilters['vegetarian']!)
return false;
来自Dart.dev:
“Casting away nullability”经常出现,以至于我们有了一个新的 速记语法。后缀感叹号 (!) 采用表达式 在左侧并将其转换为其底层的不可为空的类型。
【讨论】:
以上是关于类型“Null”不是类型转换中“bool”类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章
未处理的异常:类型“bool”不是类型转换中“String”类型的子类型
类型“null”不是类型转换中“list dynamic”类型的子类型
Flutter 未处理的异常:类型“Null”不是类型转换中“List<dynamic>”类型的子类型
颤振类型错误future <dynamic> 不是future <bool> 类型的子类型
类型'String'不是get方法颤动中类型'Null'的子类型
Firestore / flutterFire / type 'List<dynamic>' 不是类型 'List<bool>' 的子类型