AnimatedSwitcher 中两个 Flutter 转换之间需要延迟

Bal*_*ran 0 flutter flutter-animation flutter-web

我需要在 AnimatedSwitcher transitionBuilder 中的两个转换之间有短暂的延迟。我尝试了 Future.delayed,但它没有返回小部件。我应该用什么?

AnimatedSwitcher(
                          duration: Duration(seconds: 1),
                          transitionBuilder: (
                            Widget child,
                            Animation<double> animation,
                          ) {
                            return SlideTransition(
                              position: Tween<Offset>(
                                      begin: Offset(0.0, 0.1),
                                      end: Offset(0, 0))
                                  .animate(animation),
                              child: FadeTransition(
                                opacity: animation,
                                child: child,
                              ),
                            );
                          },
                          child: quizStep(quiz, screenWidth),
                        ),
Run Code Online (Sandbox Code Playgroud)

FadeTransition 必须在 SlideTransition 之后执行几秒。

7ma*_*ada 6

在您的情况下,当您使用动画进行淡入淡出和缩放时,动画将同时开始和停止。但是,您可以使用交错动画,您可以在这里找到更多相关信息: https: //flutter.dev/docs/development/ui/animations/staggered-animations

解决方案是

              FadeTransition(
                opacity: Tween<double>(begin: 0.0, end: 1.0).animate(
                  CurvedAnimation(
                    parent: animation,
                    curve: Interval(0.5, 1.0),
                  ),
                ),
                child: child,
              ),
Run Code Online (Sandbox Code Playgroud)

间隔曲线用于告诉动画何时开始和何时结束。该值应在 0.0 和 1.0 之间,因为它是动画值,0.5 将在动画时间的一半(半秒)后开始动画,您应该调整它并找到适合您需要的最佳值。