首页 > 解决方案 > 返回类型“bool”不是“void”,正如闭包的上下文飞镖颤动所要求的那样

问题描述

forEach在返回值时在函数中使用项目时使用循环时出现以下错误。

bool validatedValues(List<String> values){
    values.forEach((i){
      if (i.length > 3){
        return true;
      }
    });
    return false;
  }

我正在使用 dart null 安全 sdk 版本:">=2.12.0 <3.0.0"

完全错误:

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

标签: flutterdart

解决方案


问题是由你的return true内部引起的forEachforEach期待 avoid Function(T)不是 a bool Function(T)

我认为你试图实现的是:

bool validatedValues(List<String> values){
  bool result = false;
  values.forEach((i){
    if (i.length > 3){
      result = true;
    }
  });
  return result;
}

或者,可能更优雅:

bool validatedValues(List<String> values) => values.any((i) => i.length > 3);
  • bool any(bool test(E element));

    true如果 List 的至少一项由 验证,则返回test参考

  • bool every(bool test(E element));

    true如果 List 的所有项目都由 验证,则返回func参考


推荐阅读