Как использовать один и тот же animation.value для разных виджетов? - PullRequest
0 голосов
/ 09 марта 2020

Я новичок во флаттере, может кто-нибудь сказать, как можно использовать несколько экземпляров animation для использования отдельных animation.value в разных виджетах, например, я использую его здесь как width: animation.value, любая помощь приветствуется

.....
    controller =
        AnimationController(vsync: this, duration: Duration(milliseconds: 300));
    animation = Tween<double>(begin: 0, end: 200).animate(controller)
      ..addListener(() {
        setState(() {});
      });
    .......
    Widget build(BuildContext context) {
    return Scaffold(
  body: Row(
    children: <Widget>[MouseRegion(
                            onEnter: (hovered) {
                              controller.forward();
                            },
                            onExit: (hovered) {
                              controller.reverse();
                            },
                            child: Container(
                              color: Colors.black,
                              child: Stack(
                                children: <Widget>[
                                  AnimatedContainer(
                                    padding: EdgeInsets.all(5),
                                    color: Colors.red.shade300,
                                    duration: Duration(milliseconds: 300),
                                    curve: Curves.decelerate,
                                    height: 5,
                                    width: animation.value,
                                  ),
                                  Padding(
                                    padding: const EdgeInsets.all(8.0),
                                    child: Text(
                                      "About",
                                      softWrap: false,
                                      style: TextStyle(
                                          color: Colors.white, fontSize: 18),
                                    ),
                                  ),
                                ],
                              ),
                            ),
                          ),
                          MouseRegion(
                            onEnter: (hovered) {
                              controller.forward();
                            },
                            onExit: (hovered) {
                              controller.reverse();
                            },
                            child: Container(
                              color: Colors.black,
                              child: Stack(
                                children: <Widget>[
                                  AnimatedContainer(
                                    padding: EdgeInsets.all(5),
                                    color: Colors.red.shade300,
                                    duration: Duration(milliseconds: 300),
                                    curve: Curves.decelerate,
                                    height: 5,
                                    width: animation.value,
                                  ),
                                  Padding(
                                    padding: const EdgeInsets.all(8.0),
                                    child: Text(
                                      "About",
                                      softWrap: false,
                                      style: TextStyle(
                                          color: Colors.white, fontSize: 18),
                                    ),
                                  ),
                                ],
                              ),
                            ),
                          ),],);}
...