anchor.diff:      _scaleAnimationController
         ..value = 0.0
         ..fling(velocity: 0.4);
  +
  +    animateRotation(_rotation, 0.0);
     }
   
     void animatePosition(Offset from, Offset to) {
  
positive.code:     setState(() {
        _scale = newScale;
        _position = clampPosition(delta * details.scale);
      });
    }
  
  
negative.code:       ..fling(velocity: 0.4);
    }
  
    void animateRotation(double from, double to) {
      _rotationAnimation = Tween<double>(begin: from, end: to)
          .animate(_rotationAnimationController);
      _rotationAnimationController
        ..value = 0.0
        ..fling(velocity: 0.4);
    }
  
    @override
    void initState() {
      super.initState();
      _position = Offset.zero;
      _rotation = 0.0;
      _scale = null;
      _scaleAnimationController = AnimationController(vsync: this)
        ..addListener(handleScaleAnimation);
  
      _positionAnimationController = AnimationController(vsync: this)
        ..addListener(handlePositionAnimate);
  
      _rotationAnimationController = AnimationController(vsync: this)
        ..addListener(handleRotationAnimation);
    }
  
    @override
    void dispose() {
      _positionAnimationController.dispose();
      _scaleAnimationController.dispose();
      _rotationAnimationController.dispose();
      super.dispose();
    }
  
  