我正在尝试触发didChangeDependencies
RefreshIndicator
时呼叫onRefresh
。那有可能吗?这是我的代码/尝试:
RefreshIndicator(
onRefresh: () {
return didChangeDependencies;
},
child: ...
),
但是这段代码给我一个错误
返回的类型'void Function()'不是闭包上下文所要求的'Future'。
当我在didChangeDependencies
中进行一些业务登录并且想触发onRefresh
时要重用它时,您能告诉我如何使此代码起作用吗?
编辑:我也尝试过这种方式
RefreshIndicator(
onRefresh: didChangeDependencies,
child: ...
),
但是我得到另一个错误:
类型'()=>无效'不是类型'()=>未来'的子类型
EDIT2:这是我的didChangeDependencies方法
@override
void didChangeDependencies() {
if (_isInit) {
setState(() {
_isLoading = true;
});
standings = Provider.of<Matches>(context).standings;
if (standings.length == 0) {
Provider.of<Matches>(context).fetchStanding().then((fetchedStandings) {
standings = fetchedStandings;
if (mounted) {
setState(() {
_isLoading = false;
});
}
});
} else {
setState(() {
_isLoading = false;
});
}
}
_isInit = false;
super.didChangeDependencies();
}
答案 0 :(得分:1)
我将在didChangeDependencies中提取整个函数,然后在didChangeDependencies中将其与super.didChangeDependencies();一起调用
然后在:
中使用新功能RefreshIndicator(
onRefresh: () {
newFunction();
},
child: ...
),
答案 1 :(得分:1)
另一个答案比这更好的方法,但是要解决您的特定问题:
在更新和评论中,您获得了90%的访问权限。
类型'()=>无效'不是类型'()=>未来'的子类型
onRefresh返回一个Future。这与说RaiseButton的onPressed不同,后者将返回非未来。
https://api.flutter.dev/flutter/material/RefreshCallback.html
所以您需要给它一个未来。例如,您可以将didChangeDependencies标记为异步。