当小部件从展开的小部件更改为 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 当然不允许这样做。
我认为这就是您正在寻找的。
如果这没有帮助,请告诉我,我会尽力为您提供更多支持,祝您编码愉快!