Flutter:如何在展开和正常之间设置动画过渡

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

当小部件从展开的小部件更改为 Flex 内的普通小部件时,我需要对小部件的大小进行动画处理。我还希望 Flex 的其他子项能够动画到他们的新位置。

当前代码不起作用,因为它没有在尺寸之间进行跳跃动画:

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool expand = false;

  void _expandToggle() {
    setState(() => expand = !expand);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'Whether the child below is expanded:',
            ),
            Expanded(
              flex: expand ? 1 : 0,
              child: AnimatedSize(
                duration: const Duration(seconds: 3),
                child: ColoredBox(
                  color: Colors.yellow,
                  child: Text(
                    '$expand',
                    style: Theme.of(context).textTheme.headlineMedium,
                  ),
                ),
              ),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _expandToggle,
        child: const Icon(Icons.add),
      ),
    );
  }
}

我认为它没有动画的原因是因为理想情况下 Expanded 应该包裹在 AnimatedSize 中。但 Flutter 当然不允许这样做。

flutter dart flutter-animation
1个回答
0
投票

我认为就是您正在寻找的。

如果这没有帮助,请告诉我,我会尽力为您提供更多支持,祝您编码愉快!

© www.soinside.com 2019 - 2024. All rights reserved.