Flutter:AnimatedBuilder自定义显示动画

server/2024/11/28 7:55:49/

1、自定义显示动画,实现淡入淡出

class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin{late AnimationController _controller;@overridevoid initState() {super.initState();_controller = AnimationController(vsync: this,duration: const Duration(milliseconds: 500));}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('标题'),),body: Column(children: [Container(child: AnimatedBuilder(animation: _controller,builder: (context,child){return Opacity(// Tween定义显示范围0.5-1.0之前,animate(_controller).value 会在0- 1之间自动切换opacity: Tween(begin: 0.5,end: 1.0).animate(_controller).value,child: Container(width: 200,height: 200,color: Colors.red,),);},),),ElevatedButton(onPressed: (){_controller.forward();}, child: const Text('显示')),ElevatedButton(onPressed: (){_controller.reverse();}, child: const Text('隐藏')),],),);}
}

在这里插入图片描述

2、自定义显示动画,实现位移

class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin{late AnimationController _controller;@overridevoid initState() {super.initState();_controller = AnimationController(vsync: this,duration: const Duration(milliseconds: 500));}@overrideWidget build(BuildContext context) {// 可以通过追加chain定义动画曲线Animation x =Tween(begin: -100.0,end: 100.0).chain(CurveTween(curve: Curves.bounceInOut)).animate(_controller);return Scaffold(appBar: AppBar(title: const Text('标题'),),body: Column(children: [AnimatedBuilder(animation: _controller,builder: (context,value){return Container(width: 100,height: 100,color: Colors.red,// Tween(-100 到100 之间)进行动画// animate(_controller).value 从0到1 之间过度transform: Matrix4.translationValues(x.value, 0.0, 0.0),);}),ElevatedButton(onPressed: (){_controller.forward();}, child: const Text('移动')),ElevatedButton(onPressed: (){_controller.reverse();}, child: const Text('还原')),],),);}
}

在这里插入图片描述


http://www.ppmy.cn/server/144546.html

相关文章

在 Swift 中实现字符串分割问题:以字典中的单词构造句子

文章目录 前言摘要描述题解答案题解代码题解代码分析示例测试及结果时间复杂度空间复杂度总结 前言 本题由于没有合适答案为以往遗留问题&#xff0c;最近有时间将以往遗留问题一一完善。 LeetCode - #140 单词拆分 II 不积跬步&#xff0c;无以至千里&#xff1b;不积小流&…

ThreadLocal 和 Caffeine 缓存是两种不同的缓存机制,它们在用途和实现上有明显的区别

ThreadLocal 和 Caffeine 缓存是两种不同的缓存机制&#xff0c;它们在用途和实现上有明显的区别&#xff1a; ThreadLocal 缓存&#xff1a; ThreadLocal 提供了线程局部变量的功能&#xff0c;每个线程可以访问自己的局部变量&#xff0c;而不会与其他线程冲突。ThreadLocal …

【element-tiptap】Tiptap编辑器核心概念----内容、扩展与词汇

前言&#xff1a;本篇文章继续来讲Tiptap编辑器的核心概念&#xff0c;主要是内容、扩展、词汇相关的概念 &#xff08;一&#xff09;内容 文档内容被存储在编辑器实例的 state 属性中。所有的修改都会以事务 transaction 的形式应用于 state。state 详细介绍了当前的内容、…

安装支持ssl的harbor 2.1.4 docker 19.03.8 docker-compose 1.24.0

版本&#xff1a; docker 19.03.8 docker-compose 1.24.0 harbor: harbor-offline-installer-v2.1.4.tgz 1、先在/root下生成证书 #生成ca根证书 openssl genrsa -out ca.key 4096#创建ca证书 openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/CCN/STShenzh…

UI自动化测试中公认最佳的设计模式-POM

一、概念 什么是POM&#xff1f; POM是PageObjectModule&#xff08;页面对象模式&#xff09;的缩写&#xff0c;其目的是为了Web UI测试创建对象库。在这种模式下&#xff0c;应用涉及的每一个页面应该定义为一个单独的类。类中应该包含此页面上的页面元素对象和处理这些元…

Linux下X11协议理解

概念 X client&#xff1a;X客户端。通常是各类GUI应用&#xff0c;如Firefox、xterm、xclock等screen&#xff1a;逻辑概念上的屏幕。可以是一台物理显示器、多台物理显示器或者是VNC虚拟显示器X client与X server的通信方式有三种&#xff1a;TCP&#xff0c;unix socket和通…

GDPU 信息安全 期末复习

文章目录 第一章 绪论✅ 单选题✅ 简答题6. 假定你是单位的安全主管&#xff0c;为了提高单位的网络安全性&#xff0c;在制定单位的安全保障方案时&#xff0c;有哪些措施&#xff08;包括技术和非技术的&#xff09;&#xff1f;9. 有人说只要我有足够多的钱&#xff0c;就可…

汽车软件开发中的ASPICE合规挑战与Jama Connect解决方案

过去二十五年间&#xff0c;汽车行业发生了翻天覆地的变化。倒车影像摄像头、蓝牙集成、自动驾驶系统等创新技术已经融入到汽车的每一个部分。 二十年前&#xff0c;乘用车的车载代码仅有100万。如今&#xff0c;仅导航系统就需要2000万行代码&#xff0c;而未来全自动驾驶电动…