You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发报错:函数可能返回null但返回类型为非空类型如何解决?

报错原因

这个错误由Dart空安全校验触发:Iterable.where()方法要求传入的筛选回调必须返回非空bool值,用来判断当前元素是否符合筛选条件。你当前的回调函数体是空的,没有显式返回任何值,Dart会默认返回null,和要求的非空返回类型不匹配,因此触发报错。

另外你代码里的onGenerateRoute回调也存在相同问题:该方法要求返回Route类型,你目前只打印了参数、注释了返回语句,函数执行完会返回null,后续运行也会触发同类报错。

修复方案
  1. 补全where方法的筛选回调逻辑,根据你的过滤配置返回对应的bool值即可。假设你的Meal类内置isGlutenFree、isLactoseFree、isVegan、isVegetarian四个布尔属性,修改后的代码如下:
_availableMeal = DUMMY_MEALS.where((meal) {
  // 担心Map取值为空的话可以把!替换为?? false,避免空断言异常
  if (_filter['gluten']! && !meal.isGlutenFree) return false;
  if (_filter['lactos']! && !meal.isLactoseFree) return false;
  if (_filter['vegan']! && !meal.isVegan) return false;
  if (_filter['vegetarian']! && !meal.isVegetarian) return false;
  return true;
}).toList();

如果你的Meal类属性名和上述示例不同,替换为对应属性名即可。

  1. 修复onGenerateRoute的返回问题:要么取消返回语句的注释,不需要该配置的话可以直接删除该属性。

内容的提问来源于stack exchange,提问作者Harsh Kamani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 05:39:00