如何在flutter中设置Transform.translate()动画的持续时间?

问题描述 投票:0回答:1

我目前正在努力学习颤抖,并尝试在颤动中制作一个tic tac toe游戏。我想要我的游戏,当我点击一块瓷砖时,圆圈和十字架从上面落下。我试图用Transform.Translate()两次实现这个。像这样

GridTile(
          child: Transform.translate(
            child: Transform.translate(
              child: Image.asset(
                MultiPlayerGameLogic().imageProvider(i),
                fit: BoxFit.scaleDown,
              ),
              offset: Offset(0, -1000),
            ),
            offset: Offset(0, 1000),
          ),
        )

但这会立即发生,也看不到动画。我想设置外部Transform.translate()的持续时间。但找不到任何办法这样做。

android dart flutter
1个回答
0
投票

试试这个

AnimationController _controller;

@override
void initState() {
  super.initState();
  _controller = AnimationController(vsync: this, duration: Duration(milliseconds: 1000));
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(title: Text("Title")),
    body: AnimatedBuilder(
      animation: _controller,
      builder: (context, child) {
        return GridTile(
          child: Transform.translate(
            child: Transform.translate(
              child: Image.asset(
                MultiPlayerGameLogic().imageProvider(i),
                fit: BoxFit.scaleDown,
              ),
              offset: Offset(0, -1000),
            ),
            offset: Offset(0, 1000),
          ),
        );
      },
    ),
  );
}

无论什么时候想要启动动画,只需致电

_controller.forward();
© www.soinside.com 2019 - 2024. All rights reserved.