如何在 Flutter 中反转不同持续时间的动画

Rob*_*e53 7 animation flutter

我为一个向前和向后旋转的容器创建一个动画,我希望反向动画比向前动画长,我该怎么办?

import 'dart:math'as math;
import 'package:flutter/material.dart';
class AnimationPage extends StatefulWidget {
  @override
  _AnimationPageState createState() => _AnimationPageState();
}

class _AnimationPageState extends State<AnimationPage>
    with TickerProviderStateMixin {
  AnimationController animController;
  Animation<double> animation;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    animController =
        AnimationController(duration: Duration(seconds: 5), vsync: this);

        animation= Tween<double>(
          begin: 0, end: 2* math.pi,
          ).animate(animController)
          ..addListener((){
            setState((){});
          })
          ..addStatusListener((status) {
            if(status == AnimationStatus.completed){
              animController.reverse();
            } else if(status == AnimationStatus.dismissed){
              animController.forward();
            }
          });

    animController.forward();
Run Code Online (Sandbox Code Playgroud)

Cri*_*ant 14

只需添加一个reverseDuration参数即可AnimationController

animController = AnimationController(
  duration: Duration(seconds: 5),
  reverseDuration: Duration(seconds: 8),
  vsync: this,
);
Run Code Online (Sandbox Code Playgroud)