Flutter中RefreshIndicator传参报错:Future<void>无法赋值给Future<void> Function()
问题解决方法
错误原因
refresh(value: true)是直接调用函数,返回的是执行后的Future<void>对象;但RefreshIndicator的onRefresh参数需要的是一个无参的函数类型(Future<void> Function())——也就是要传递一个“能被调用的函数”,而非函数执行完毕后的结果。
解决方案
方法一:用匿名函数包裹(最常用)
把带参数的函数调用放进无参匿名函数中,这样传递给onRefresh的就是符合要求的函数类型:
return RefreshIndicator( onRefresh: () => refresh(value: true), ... );
如果需要后续添加额外异步逻辑,也可以写成:
return RefreshIndicator( onRefresh: () async { await refresh(value: true); // 可在此添加其他异步操作 }, ... );
方法二:提前定义绑定参数的函数
如果该带参数的刷新逻辑会被多次使用,可以单独定义一个无参函数,内部调用带参数的refresh:
// 提前定义函数 Future<void> refreshWithValueTrue() => refresh(value: true); // 视图中使用 return RefreshIndicator( onRefresh: refreshWithValueTrue, ... );
内容的提问来源于stack exchange,提问作者rozerro
相关产品推荐
相关产品推荐

