返回类型“bool”不是“void”,这是闭包上下文 dart flutter 所要求的

gou*_*mi3 10 dart flutter

forEach当返回值时在函数中使用项目的循环时,我收到以下错误。

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

我使用 dart null safety 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
Run Code Online (Sandbox Code Playgroud)

Thi*_*rry 15

该问题是由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;
}
Run Code Online (Sandbox Code Playgroud)

或者,可能更优雅:

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

    true如果列表中至少一项通过 验证,则返回此值test参考

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

    true如果列表中的所有项目都经过验证,则返回此值func参考

  • 或者,一般来说,更喜欢普通的“for”循环而不是“Iterable.forEach”。 (2认同)