anchor.diff:    }
   
     Animation<double> _initAnimation(Curve curve, bool inverted) {
  -    Animation<double> result = _controller!.drive(CurveTween(curve: curve));
  +    Animation<double> result = _controller.drive(CurveTween(curve: curve));
       if (inverted)
         result = result.drive(Tween<double>(begin: 1.0, end: 0.0));
       return result;
  
positive.code:       vsync: this,
      );
      if (widget.crossFadeState == CrossFadeState.showSecond)
        _controller!.value = 1.0;
      _firstAnimation = _initAnimation(widget.firstCurve, true);
      _secondAnimation = _initAnimation(widget.secondCurve, false);
      _controller!.addStatusListener((AnimationStatus status) {
        setState(() {
          // Trigger a rebuild because it depends on _isTransitioning, which
          // changes its value together with animation status.
  
negative.code: 
    @override
    void dispose() {
      _controller.dispose();
      super.dispose();
    }
  
  