Flutter-数字切换动画

news/2024/4/26 21:02:41
效果

num.gif

需求
  • 数字切换时新数字从上往下进入,上个数字从上往下出
  • 新数字进入时下落到位置并带有回弹效果
  • 上个数字及新输入切换时带有透明度和缩放动画
实现

主要采用AnimatedSwitcher实现需求,代码比较简单,直接撸

import 'dart:math';import 'package:flutter/material.dart';
import 'package:flutter_xy/widgets/xy_app_bar.dart';class NumAnimPage extends StatefulWidget {const NumAnimPage({super.key});@overrideState<NumAnimPage> createState() => _NumAnimPageState();
}class _NumAnimPageState extends State<NumAnimPage> {int _currentNum = 0;// 数字文本随机颜色Color get _numColor {Random random = Random();int red = random.nextInt(256);int green = random.nextInt(256);int blue = random.nextInt(256);return Color.fromARGB(255, red, green, blue);}// 数字累加void _addNumber() {setState(() {_currentNum++;});}@overrideWidget build(BuildContext context) {return Scaffold(appBar: XYAppBar(title: "数字动画",),body: Center(child: _bodyWidget(),),);}Widget _bodyWidget() {return Column(mainAxisAlignment: MainAxisAlignment.center,children: [AnimatedSwitcher(duration: const Duration(milliseconds: 500),transitionBuilder: (Widget child, Animation<double> animation) {Offset startOffset = animation.status == AnimationStatus.completed? const Offset(0.0, 1.0): const Offset(0.0, -1.0);Offset endOffset = const Offset(0.0, 0.0);return SlideTransition(position: Tween(begin: startOffset, end: endOffset).animate(CurvedAnimation(parent: animation, curve: Curves.bounceOut),),child: FadeTransition(opacity: Tween(begin: 0.0, end: 1.0).animate(CurvedAnimation(parent: animation, curve: Curves.linear),),child: ScaleTransition(scale: Tween(begin: 0.5, end: 1.0).animate(CurvedAnimation(parent: animation, curve: Curves.linear),),child: child,),),);},child: Text('$_currentNum',key: ValueKey<int>(_currentNum),style: TextStyle(fontSize: 100, color: _numColor),),),const SizedBox(height: 80),ElevatedButton(onPressed: _addNumber,child: const Text('数字动画',style: TextStyle(fontSize: 25, color: Colors.white),),),],);}
}

具体见github:github.com/yixiaolunhui/flutter_xy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/10740.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

开启Safari手势支持

在使用Safari 的时候&#xff0c;大家有没有觉得不支持手势使用起来不是很方便&#xff0c; 触摸板只支持少量简单的手势&#xff0c;如缩放&#xff0c;滚动等。如果使用鼠标的用户&#xff0c;则完全无法使用手势。经过折腾研究&#xff0c;使用CirMenu应用可以完美解决这个要…

milvus安装

milvus安装 wget https://github.com/milvus-io/milvus/releases/download/v2.1.4/milvus-standalone-docker-compose.yml -O docker-compose.yml sudo docker-compose up -d sudo docker-compose ps

详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议

目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH&#xff08;Authentication Header&#xff0c;认证头&#xff09; ESP&#xff08;Encapsulating Security Payload&#xff0c;封装安全载荷&#xff09; IKE&#xff08;Internet Key Exchange&#xff0c;因特网密钥…

关系数据库标准语言SQL

1.SQL概述 1.1基本表&#xff08;Base table&#xff09; 实际存储在数据库中的表SQL中一个关系就对应一个基本表基本表可以有若干个索引基本表的集合组成关系模式&#xff0c;即全局概念模式&#xff08;数据的整体逻辑结构&#xff09; 1.2 存储文件 存储文件和相关索引组…

外包干了5天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

深入理解mysql 从入门到精通

1. MySQL结构 由下图可得MySQL的体系构架划分为&#xff1a;1.网络接入层 2.服务层 3.存储引擎层 4.文件系统层 1.网络接入层 提供了应用程序接入MySQL服务的接口。客户端与服务端建立连接&#xff0c;客户端发送SQL到服务端&#xff0c;Java中通过JDBC来实现连接数据库。 …