当前位置:网站首页>Flutter 使用 AnimatedSwitcher 做场景切换
Flutter 使用 AnimatedSwitcher 做场景切换
2022-07-17 18:19:00 【InfoQ】
前言
AnimatedSwitcher
AnimatedSwitcher 介绍
AnimatedSwitcherFadeTransitionAnimatedSwitcherconst AnimatedSwitcher({
Key? key,
this.child,
required this.duration,
this.reverseDuration,
this.switchInCurve = Curves.linear,
this.switchOutCurve = Curves.linear,
this.transitionBuilder = AnimatedSwitcher.defaultTransitionBuilder,
this.layoutBuilder = AnimatedSwitcher.defaultLayoutBuilder,
})
AnimatedSwitcherdurationreverseDuration:反向时长,也就是切换为旧组件的时长,不设置的话就和duration一致。
switchInCurve:切入动画曲线,也就是新组件切换进入的曲线;
switchOutCurve:切出动画曲线,也就是旧组件切换出去时的曲线;
transitionBuilder:切换转变动画构建,是一个函数,定义如下,可以用这个方法来构建自己的切换动效。
typedef AnimatedSwitcherTransitionBuilder = Widget Function(Widget child, Animation<double> animation);
layoutBuilder:可以设置新组件在组件树中的布局,也是一个函数:
typedef AnimatedSwitcherLayoutBuilder = Widget Function(Widget? currentChild, List<Widget> previousChildren);
defaultLayoutBuilderstatic Widget defaultLayoutBuilder(Widget? currentChild, List<Widget> previousChildren) {
return Stack(
children: <Widget>[
...previousChildren,
if (currentChild != null) currentChild,
],
alignment: Alignment.center,
);
}
AnimatedSwitcherAnimatedSwitcherWidgetcanUpdatestatic int _debugConcreteSubtype(Widget widget) {
return widget is StatefulWidget ? 1 :
widget is StatelessWidget ? 2 :
0;
}
KeyValueKey应用
SizeTransition class AnimatedSwitcherDemo extends StatefulWidget {
AnimatedSwitcherDemo({Key? key}) : super(key: key);
@override
_AnimatedSwitcherDemoState createState() => _AnimatedSwitcherDemoState();
}
class _AnimatedSwitcherDemoState extends State<AnimatedSwitcherDemo> {
Widget? _animatedWidget;
bool test = false;
@override
void initState() {
super.initState();
_animatedWidget = ClipOval(
child: Image.asset('images/beauty.jpeg'),
key: ValueKey(1),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AnimatedSwticher'),
brightness: Brightness.dark,
backgroundColor: Colors.black,
),
backgroundColor: Colors.black,
body: Center(
child: Container(
padding: EdgeInsets.all(10.0),
child: AnimatedSwitcher(
child: _animatedWidget,
duration: const Duration(milliseconds: 1000),
transitionBuilder: (child, animation) {
return SizeTransition(
sizeFactor: animation,
child: child,
);
},
),
),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.play_arrow),
onPressed: () {
setState(() {
test = !test;
_animatedWidget = test
? ClipOval(
child: Image.asset('images/beauty2.jpeg'),
key: ValueKey(2),
)
: ClipOval(
child: Image.asset('images/beauty.jpeg'),
key: ValueKey(1),
);
});
},
),
);
}
}
总结
AnimatedSwitcherAnimatedSwitcherKey
边栏推荐
- XML文件解析
- STL string查找子串
- 【腾讯蓝鲸】第七届 7·24 运维日节日祝福送上~ 快来许愿~
- 响应式织梦模板酒窖类网站
- Cloud health management system based on STM32 (using Alibaba cloud Internet of things platform)
- npm err! [email protected] build: `umi build`
- Module 7 (Architecture Design of King glory mall)
- 如何在MFC中添加一个线程
- Minimum exchange times
- 音频控制常见BUG注意事项
猜你喜欢

Wrong again, byte alignment and the use of pragma pack

C语言进阶——字符函数和字符串函数

Audio common terminal anatomy - never make a mistake again

整理了一份通用的内存管理驱动代码

torch. utils. data. Dataloader description

jvm自学总结

LeetCode 0118. 杨辉三角

Visual ETL tool kettle concept, installation and practical cases

AE如何制作星云粒子特效
[email protected] Nanocomposites | zif-8/ poly"/>MOF customized materials | bimetallic CuNi MOF nano materials | core-shell structure [email protected] Nanocomposites | zif-8/ poly
随机推荐
基于MOS管的防反接电路设计仿真
LeetCode 0565.数组嵌套:转换为图 + 原地修改の优化
A general memory management driver code is sorted out
Which domestic API tool is better? It turned out to be it
Array simulation queue
Computer dial-up Internet access
Metal organic framework material / polymer composite zif-8/p (TDA co HDA) | zinc oxide [email protected] (FE) composite nan
Codeforce:g. good key, bad key [greed]
Using the case statement will produce a latch condition
506. Relative ranking
实现自动记录日志
Flask source code analysis (III): Context
【错误记录/selectpicker】dropdown menu显示位置出现偏移
mysql排序索引失效?
Panasonic A6 servo driver external absolute value grating ruler full closed loop parameter setting
[pyGame learning notes] 7 event
Uio-66 | fe3o4/cu3 (BTC) 2 metal organic framework (MOF) nanocomposites supported on silver nanoparticles | nagdf4:yb, er upconversion nanoparticles @zif-8
XML file parsing
MOF customized material | NH (2) -uio66/rgo Graphene Oxide Nanocomposite | methylene blue loaded zif-90 nanoparticles
又错了,字节对齐及#pragma pack的使用