我有一个Flutter应用程序,它有一个AnimatedSwitcher小部件,可以在两个容器之间转换。过渡效果很好,但我希望动画小部件外部的按钮能够平滑地跟随过渡而不跳跃。
下面是当前代码:
import 'package:flutter/material.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: darkBlue,
),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatefulWidget {
@override
State<MyWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
bool _isOn = false;
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
ElevatedButton(
onPressed: () {
setState(() {
_isOn = !_isOn;
});
},
child: const Text('Toggle'),
),
AnimatedSwitcher(
duration: const Duration(milliseconds: 2000),
child: _isOn
? Container(
key: const ValueKey('On'),
color: Colors.green,
height: 300,
width: 300,
child: const Text('On'),
)
: Container(
key: const ValueKey('Off'),
color: Colors.red,
height: 500,
width: 300,
child: const Text('Off'),
),
),
],
);
}
}
在这段代码中,我有一个MyApp小部件和一个MyWidget StatefulWidget。MyWidget包含一个基于切换按钮在两个容器之间转换的AnimatedSwitcher。
我想实现两个容器之间的平滑过渡动画(例如,淡入淡出,旋转),同时确保外部按钮在整个动画中保持一致的位置(例如,高度)。
在这里,我放置2个小部件与特定的高度,但我的真实的应用程序有不同的高度可能。
有没有人知道如何实现这一点?非常感谢您的帮助!
1条答案
按热度按时间xienkqul1#
使用AnimatedSize将保持按钮在顶部,但对齐方式需要从默认
center
更改为topCenter
v0:你可以
AnimatedContainer
,它将动画。