Dart错误:返回类型'bool Function()'不符合闭包要求的'bool'类型
问题原因及解决方法
你的代码报错核心原因是没有调用isSpace方法,而是直接引用了方法本身。
在removeWhere的闭包逻辑里,word.isSpace返回的是一个bool Function()类型的函数对象,但removeWhere要求闭包必须返回bool值,类型不匹配导致了报错。
两种解决方式:
方式一:调用方法
修改getWords函数里的判断逻辑,给isSpace加上括号,执行方法获取返回的布尔值:List<String> getWords(String input) { List<String> result = input.split(" "); result.removeWhere((word) => word.isSpace()); return result; }方式二:将方法改为Getter属性
如果想保持word.isSpace的写法,可以把extension里的方法改成Getter属性,这样访问时无需加括号:extension on String { bool get isSpace { return trim().isEmpty; } } List<String> getWords(String input) { List<String> result = input.split(" "); result.removeWhere((word) => word.isSpace); return result; }
内容的提问来源于stack exchange,提问作者confused.jpg
相关产品推荐
相关产品推荐

