Как перевести с анимацией - PullRequest
0 голосов
/ 19 июня 2019

Я использую пакет Animator для перемещения контейнера.Чего я хочу добиться, это переместить контейнер из Alignment.bottomCenter в Alignment.topCenter, но я могу использовать только смещение.Есть ли способ использовать выравнивание?

                   Animator(
                          triggerOnInit: _logoMovesUp,
                          tween: Tween<Offset>(
                         //HERE I WANT TO USE THE ALIGNMENT
                              begin: Offset(0.0, 0.0), end: Offset(0.0, -100.0)),
                          duration: Duration(seconds: 1),
                          builder: (anim) => Transform.translate(
                                offset: anim.value,
                                child: Container(
                                    alignment: Alignment.bottomCenter,
                                    child: Container(Text('Test')),
                              ))

1 Ответ

0 голосов
/ 19 июня 2019

Да, вы можете использовать AnimatedAlign. Как это:

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  Alignment _alignment = Alignment.bottomCenter;

  animate() {
    setState(() {
      if (_alignment == Alignment.bottomCenter) {
        _alignment = Alignment.topCenter;
      } else {
        _alignment = Alignment.bottomCenter;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Animation'),
      ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: animate,
        label: Text('Animate'),
      ),
      body: Stack(
        children: <Widget>[
          AnimatedAlign(
            alignment: _alignment,
            duration: Duration(milliseconds: 350),
            curve: Curves.easeIn,
            child: Container(
              color: Colors.orange,
              child: Text('Test'),
            ),
          ),
        ],
      ),
    );
  }
}
...