有一个功能
Future<void> refresh({bool value = false}) async {
changeUsers(await _service.loadUsers());
if (value) return;
...
}
我可以用它的方式
return RefreshIndicator(
onRefresh: refresh,
...
但如果我需要传递命名参数
return RefreshIndicator(
onRefresh: refresh(value: true),
...
它给出了错误
无法将参数类型“Future”分配给参数类型“Future Function()”。
怎么修?
2条答案
按热度按时间mzmfm0qo1#
RefreshIndicator
上的onRefresh
接受带有签名的函数:但是当你提供
refresh(value: true)
时,你不再提供该签名的方法,而是调用你的refresh
函数,并提供该调用的结果,最终是Future<void>
。如果你想用一些特定的参数来调用你的方法,你需要提供一个函数给
onRefresh
来实现。例如:我们在这里提供
() => refresh(value: true)
作为匿名函数,它调用refresh(value: true)
并返回该调用可能返回的任何内容,这里是Future<void>
。因此,提供的方法适合onRefresh
的指定签名。xoefb8l82#
要修复此错误,您需要向
RefreshIndicator
的onRefresh
参数传递一个函数。目前,您正在调用refresh
函数并将其结果传递给onRefresh
,这导致了错误。要将命名参数传递给
refresh function
,可以使用lambda函数或匿名函数。