Flutter 是否可以调用函数';onPress';?
当触发Flutter 是否可以调用函数';onPress';?,flutter,dart,Flutter,Dart,当触发RefreshIndicatoronRefresh时,我试图调用didChangeDependencies。这可能吗?这是我的代码/请尝试: RefreshIndicator( onRefresh: () { return didChangeDependencies; }, child: ... ), 但是这个代码给了我一个错误 按照闭包上下文的要求,返回类型“void Function()”不是“Future” 当我在didChangeDependencies中有一
RefreshIndicator
onRefresh
时,我试图调用didChangeDependencies
。这可能吗?这是我的代码/请尝试:
RefreshIndicator(
onRefresh: () {
return didChangeDependencies;
},
child: ...
),
但是这个代码给了我一个错误
按照闭包上下文的要求,返回类型“void Function()”不是“Future”
当我在didChangeDependencies
中有一些业务登录,并且我想在触发onRefresh
时重新使用该代码时,您能告诉我如何使该代码工作吗
编辑:我也试过这种方法
RefreshIndicator(
onRefresh: didChangeDependencies,
child: ...
),
但是我得到了另一个错误:
类型“()=>void”不是类型“()=>Future”的子类型
EDIT2:这是我的方法
@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();
}
@覆盖
void didChangeDependencies(){
如果(_isInit){
设置状态(){
_isLoading=true;
});
排名=提供(上下文)排名;
if(standings.length==0){
Provider.of(context.fetchStanding().then((fetchedStandings){
排名=获取的排名;
如果(已安装){
设置状态(){
_isLoading=false;
});
}
});
}否则{
设置状态(){
_isLoading=false;
});
}
}
_isInit=假;
super.didChangeDependencies();
}
我将在didChangeDependencies中提取整个函数,然后在didChangeDependencies中与super.didChangeDependencies()一起调用它
然后在中使用新功能:
RefreshIndicator(
onRefresh: () {
newFunction();
},
child: ...
),
我将在didChangeDependencies中提取整个函数,然后在didChangeDependencies中与super.didChangeDependencies()一起调用它 然后在中使用新功能:
RefreshIndicator(
onRefresh: () {
newFunction();
},
child: ...
),
另一个答案比这更好,但为了解决您的具体问题: 你在更新和评论中获得了90%的成功 类型“()=>void”不是类型“()=>Future”的子类型 onRefresh返回一个未来。这与按下RaiseButton按钮不同,它将返回一个非未来
所以你需要给它一个未来。例如,您可以将didChangeDependencies标记为async。另一个答案有一个更好的方法,但要解决您的特定问题: 你在更新和评论中获得了90%的成功 类型“()=>void”不是类型“()=>Future”的子类型 onRefresh返回一个未来。这与按下RaiseButton按钮不同,它将返回一个非未来
所以你需要给它一个未来。例如,您可以将didChangeDependencies标记为async。为什么不创建一个单独的方法并从OnRefresh和didChangeDependencies调用它?是的,我可以这样做,但我想问一下调用didChangeDependencies是否可行。我想知道…你可以调用它,它只是一个普通的方法是的,但似乎我必须转换它,使它返回void而不是Future,但是我如何才能做到这一点,代码是什么?调用
didChangeDependencies
的原因是什么?您希望通过这样做实现什么?为什么不创建一个单独的方法并从OnRefresh和didChangeDependencies调用它?是的,我可以这样做,但我想问调用didChangeDependencies是否可能。我想知道…你可以调用它,它只是一个普通的方法是的,但似乎我必须转换它,使它返回void而不是Future,但是我如何才能做到这一点,代码是什么?调用didChangeDependencies
的原因是什么?你想通过这样做实现什么?