title: Flutter animate reverse effect on FadeTransition
body: <p>in this simple code, i try to show and hide barrier on top of widgets,showing this barrier can be have with animation, but when i try to close and hide that, <code>controller.reverse()</code> doesn't have any animation to hide</p>
  
  <pre><code>import 'package:flutter/material.dart';
  
  void main() =&gt; runApp(MaterialApp(
        home: BarrierEffect(),
      ));
  
  class BarrierEffect extends StatefulWidget {
    @override
    State&lt;BarrierEffect&gt; createState() =&gt; _BarrierEffect();
  }
  
  class _BarrierEffect extends State&lt;BarrierEffect&gt; with TickerProviderStateMixin {
    var isShownBarrier = false;
    AnimationController controller;
    Animation&lt;double&gt; animation;
  
    @override
    void initState() {
      super.initState();
      controller = AnimationController(duration: const Duration(milliseconds: 1000), vsync: this);
      animation = CurvedAnimation(parent: controller, curve: Curves.easeIn);
  
      animation.addStatusListener((status) {
        if (status == AnimationStatus.completed) {
          controller.reverse();
          setState(() {
            isShownBarrier = false;
          });
        } else if (status == AnimationStatus.dismissed) {
          controller.forward();
          setState(() {
            isShownBarrier = true;
          });
        }
      });
    }
  
    @override
    Widget build(BuildContext context) {
      return Scaffold(
        body: Container(
          child: Stack(
            children: &lt;Widget&gt;[
              Center(
                child: RaisedButton(
                    color: Colors.white,
                    child: Text('show barrier'),
                    onPressed: () =&gt; controller.forward(),
                    shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(50.0))),
              ),
              Visibility(
                visible: isShownBarrier ? true : false,
                child: FadeTransition(
                  opacity: animation,
                  child: Container(
                    color: Colors.black.withOpacity(0.5),
                    child: Center(child: Text('test')),
                  ),
                ),
              )
            ],
          ),
        ),
      );
    }
  }
  </code></pre>