志在巅峰的攀登者,不会陶醉在沿途的某个脚印之中,在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。
在 Flutter 中 ,SizeTransition 可以理解为尺寸动画。

如果你有兴趣 你可以关注一下公众号 biglead 来获取最新的学习资料。
本文章实现的效果是

SizeTransition 简述
const SizeTransition({
Key? key,
this.axis = Axis.vertical,
required Animation<double> sizeFactor,
this.axisAlignment = 0.0,
this.child,
})
- sizeFactor:动画控制,例如 AnimationController
- axis:表示动画出现的方式,分别是Axis.vertical和Axis.horizontal,垂直方向和横轴方向
- axisAlignment:表示动画出现的原始位置偏移量,如果是在垂直方向指的是y,如果是横轴方向指的是x
本实例 Demo
测试页面入口
main() {
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
home: DemoSizeTransition(),
));
}
然后就是 DemoSizeTransition如下:
class DemoSizeTransition extends StatefulWidget {
@override
_DemoSizeTransitionState createState() => _DemoSizeTransitionState();
}
class _DemoSizeTransitionState extends State<DemoSizeTransition>
with SingleTickerProviderStateMixin {
late AnimationController _animationController;
@override
void initState() {
super.initState();
_animationController =
new AnimationController(vsync: this, duration: Duration(seconds: 1));
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("SizeTransition")),
body: SizeTransition(
axisAlignment: 0.0,
sizeFactor: _animationController,
axis: Axis.horizontal,
child: buildContainer(),
),
floatingActionButton: FloatingActionButton(
child: Text("开始"),
onPressed: () {
_animationController.forward(from: 0);
},
),
);
}
Container buildContainer() {
return Container(
alignment: Alignment.center,
width: 300,
height: 200,
color: Colors.blue,
child: Text(
"早起的年轻人",
style: TextStyle(color: Colors.white),
),
);
}
}

|