Flutter:AnimatedSwitcher当子元素改变时,触发动画

news/2024/11/24 2:35:15/
AnimatedSwitcher中的子元素
由:CircularProgressIndicator()
改变为:Image.network('https://cdn.uviewui.com/uview/swiper/1.jpg')
则会触发动画
class _MyHomePageState extends State<MyHomePage> {bool flag = true;@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('标题'),),body: Center(child: Container(alignment: Alignment.center,width: 400,height: 200,color: Colors.yellowAccent,child: AnimatedSwitcher(duration: const Duration(milliseconds: 500),child: flag ? const CircularProgressIndicator() : Image.network('https://cdn.uviewui.com/uview/swiper/1.jpg'),),),),floatingActionButton: FloatingActionButton(onPressed: (){flag = !flag;setState(() {});},child: const Icon(Icons.add),),);}
}

在这里插入图片描述

AnimatedSwitcher中通过添加transitionBuilder修改动画效果

// 添加1个缩放动画
child: AnimatedSwitcher(
transitionBuilder:((child, animation){ // 改变动画效果return ScaleTransition( // 缩放scale: animation,child: child,);}),duration: const Duration(milliseconds: 500),child: flag ? const CircularProgressIndicator() : Image.network('https://cdn.uviewui.com/uview/swiper/1.jpg'),
),// 动画也可以叠加使用,在添加一个淡入淡出
child: AnimatedSwitcher(transitionBuilder:((child, animation){ // 改变动画效果return ScaleTransition( // 缩放scale: animation,child: FadeTransition(opacity: animation,child: child,), // 淡入淡出);}),duration: const Duration(milliseconds: 500),child: flag ? const CircularProgressIndicator() : Image.network('https://cdn.uviewui.com/uview/swiper/1.jpg'),
),

在这里插入图片描述

AnimatedSwitcher里如果是改变同样的组件,如何触发动画

// 相同组件,只是内容更换,需要加key: UniqueKey()唯一的
child: Text(flag ? "你好Flutter" : "改变内容",key: UniqueKey()
),

http://www.ppmy.cn/news/1549426.html

相关文章

百度Q3财报:净利润增长17%超预期 文心大模型日调用量增30倍达15亿

发布 | 大力财经 11月21日晚&#xff0c;百度发布2024年第三季度财务报告&#xff0c;显示季度总营收336亿元&#xff0c;百度核心营收265亿元&#xff0c;归属百度核心的净利润75.4亿元&#xff0c;同比增长17%&#xff0c;超出市场预期。财报显示&#xff0c;11月&#xff0…

Excel常用技巧分享

excel单元格内换行 直接按回车会退出当前单元格的编辑&#xff0c;如果需要在单元格中换行&#xff0c;需要按下AltEnter。 excel插入多行或多列 WPS 在WPS中想要插入多行&#xff0c;只需在右键菜单中输入对应的数字即可。 Office Excel excel中相对麻烦一些&#xff0c;比…

web——sqliabs靶场——第九关——时间盲注

什么是时间盲注 时间盲注是指基于时间的盲注&#xff0c;也叫延时注入&#xff0c;根据页面的响应时间来判断是否存在注入。 使用sqlmap不同的技术 sqlmap --technique 参数用来设置具体SQL注入技术 B: Boolean-based blind 基于布尔的忙逐步 E:Error-based 报错注入 U&am…

PyTorch 分布式并行计算

0. Abstract 使用 PyTorch 进行多卡训练, 最简单的是 DataParallel, 仅仅添加一两行代码就可以使模型在多张 GPU 上并行地计算. 但它是比较老的方法, 官方推荐使用新的 Distributed Data Parallel, 更加灵活与强大: 1. Distributed Data Parallel (DDP) 从一个简单的非分布…

Django用户认证定制化与扩展方案分析

Django用户认证定制化与扩展方案分析 目录 &#x1f4dd; 基于AbstractUser定制Django用户模型⚙️ 使用自定义字段扩展用户模型&#x1f510; 自定义用户权限与分组的管理&#x1f6e0;️ 自定义用户模型的其他实现方案⚖️ 不同用户模型方案的优缺点分析 1. &#x1f4dd; …

Linux登录指令last详解文章

引言 在Linux系统中&#xff0c;了解用户登录记录是系统管理和安全审计的重要任务之一。last指令作为Linux系统中用于检索和展示用户登录信息的工具&#xff0c;扮演着至关重要的角色。本文将详细介绍last指令的定义、架构、原理、企业应用以及常见的命令体系&#xff0c;帮助…

Python实战 | 使用 Python 的日志库(logging)和 pandas 库对日志数据进行分析

专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271…

前端vue调试样式方法

1.选中要修改的下拉框&#xff0c;找到对应的标签的class样式 2.在浏览器中添加width宽度样式覆盖原有的样式&#xff0c;如果生效后说明class对了&#xff0c;则到vue页面的strye中添加覆盖样式 <style> :deep(.el-select){width: 180px; } </style>3.寻找自定义…