Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 是否可以调用函数';onPress';?_Flutter_Dart - Fatal编程技术网

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
的原因是什么?你想通过这样做实现什么?