Flutter [animations] OpenContainer如何检测动画完成

时间:2020-06-27 07:18:16

标签: flutter flutter-animation

我正在使用const item = "CACHED ITEM 2" const names = ["CACHED ITEM 1"]; if (_.contains(names,item)) console.log(true) else console.log(false) 打开一个屏幕,该屏幕可能会在屏幕打开时显示警报对话框-屏幕尝试显示的项目不再有效或已删除。

由于OpenContainer会在动画过程中渲染屏幕,因此警报对话框会显示多次。

我尝试解决该问题的方法是修改OpenContainer animation方法以将动画状态返回到OpenContainer buildPage回调。是否有更好的方法可以完成而无需修改openBuilder代码?

OpenContainer

用于重现问题的代码-https://gist.github.com/MartinJLee/0992a986ad641ef5b4f477fb1ce69249 the issue

2 个答案:

答案 0 :(得分:0)

您可以像这样将侦听器添加到AnimationController中

考虑您有一个类似的AnimationController-

AnimationController _animationController =  AnimationController(
            vsync: this, 
            duration: Duration(seconds: 5),
      );

然后,您可以使用addStatusListener方法向此_animationController添加状态侦听器,类似这样-

_animationController.addStatusListener((status) {
        if(status == AnimationStatus.completed){
          //Do something here
        }
    });

每次动画状态更改时都会调用此侦听器。

希望这会有所帮助!

答案 1 :(得分:0)

我能够在openBuilder的容器上使用以下代码。

  void initState() {
    super.initState();
    WidgetsBinding.instance
        .addPostFrameCallback((_) => yourFunction(context));
  }

查看原始答案-Flutter: Run method on Widget build complete