Flutter动画库:animations(路由过渡动画或者页面切换动画)

animations

animations 是一个 Flutter 库,它提供了一组用于创建动画效果的工具和组件。这个库的核心重点是路由过渡动画或者页面切换动画

地址
https://pub-web.flutter-io.cn/packages/animations

安装

flutter pub add animations

看了下官方文档和官方例子,然后就有点懵。差点以为找错库了。还好flutter中的库可以直接点开(ctrl+鼠标右键)查看源码

点开:import 'package:animations/animations.dart';,可以看到有以下几个文件
在这里插入图片描述
modal.dart用不到,另外几个就是官方提供给我们的动画。下面一块看一下,以下都是使用的默认配置,记得引入下面这个包

`import 'package:animations/animations.dart';`

fade_scale_transition

Center(child: ElevatedButton(
onPressed: () {showModal(context: context,// 配置configuration: const FadeScaleTransitionConfiguration(),builder: (context) {return const Center(child: SizedBox(width: 250,height: 250,child: Material(child: Center(child: FlutterLogo(size: 250),),),),);});
},
child: const Text("打开弹窗"),
));

在这里插入图片描述

fade_through_transition

这个是一个路由切换动画

MaterialApp(theme: ThemeData(// 设置页面过渡主题pageTransitionsTheme: const PageTransitionsTheme(builders: {TargetPlatform.android: FadeThroughPageTransitionsBuilder(),TargetPlatform.iOS: FadeThroughPageTransitionsBuilder(),})),// 路由routes: {'/': (BuildContext context) {return Container(color: Colors.red,child: Center(child: TextButton(child: const Text('Push route'),onPressed: () {Navigator.of(context).pushNamed('/a');},),),);},'/a': (BuildContext context) {return Container(color: Colors.blue,child: Center(child: TextButton(child: const Text('Pop route'),onPressed: () {Navigator.of(context).pop();},),),);},},// home: YcHomePage(),);

在这里插入图片描述

open_container

这个还是很不错的

Center(child: OpenContainer(transitionDuration: const Duration(milliseconds: 500),// 打开状态openBuilder: (BuildContext context, VoidCallback _) {return const SecondPage();},// 闭合状态closedBuilder: (BuildContext context, VoidCallback openContainer) {return GestureDetector(onTap: openContainer,child: Container(width: 200,height: 200,color: Colors.blue,child: const Center(child: Text('Tap to Open',style: TextStyle(color: Colors.white,fontSize: 20,),),),),);},));
class SecondPage extends StatelessWidget {const SecondPage({Key? key}) : super(key: key);Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('Second Page'),),body: const Center(child: Text('Second Page',style: TextStyle(fontSize: 24,fontWeight: FontWeight.bold,),),),);}
}

在这里插入图片描述

page_transition_switcher

可以用于在不同页面之间实现平滑的过渡动画。它可以让我们在切换页面时应用自定义的过渡效果,比如淡入淡出、滑动、缩放等。


// 创建一个PageTransitionSwitcher组件,并将需要切换的页面作为其子组件。
class SwitcherContainer extends StatefulWidget {const SwitcherContainer({Key? key}) : super(key: key);_SwitcherContainerState createState() => _SwitcherContainerState();
}class _SwitcherContainerState extends State<SwitcherContainer> {int _pageIndex = -1;Widget build(BuildContext context) {return PageTransitionSwitcher(// 过渡时间duration: const Duration(milliseconds: 500),// 过渡构建函数,还有其他的构建函数具体见源码transitionBuilder: (child, animation, secondaryAnimation) {return FadeThroughTransition(animation: animation,secondaryAnimation: secondaryAnimation,child: child,);},child: _getPage(_pageIndex),);}Widget _getPage(int index) {switch (index) {case 0:return const FirstPage();default:return Center(child: ElevatedButton(onPressed: () {setState(() {_pageIndex = 0;});},child: const Text("跳转")),);}}
}class FirstPage extends StatelessWidget {const FirstPage({Key? key}) : super(key: key);Widget build(BuildContext context) {return const Scaffold(body: Center(child: Text('Second Page',style: TextStyle(fontSize: 24,fontWeight: FontWeight.bold,),),),);}
}

这里写的例子不太合适,正常应该是跑马灯那样进行切换。
在这里插入图片描述

shared_axis_transition

SharedAxisPageTransitionsBuilderanimations库中的一个过渡构建器,它可以在页面之间应用共享坐标轴的过渡动画效果。它提供了三个不同的过渡类型:SharedAxisTransitionType.scaledSharedAxisTransitionType.horizontalSharedAxisTransitionType.vertical,分别表示缩放、水平和垂直方向的过渡效果。

这个也是一个路由过渡动画

class MyApp extends StatelessWidget {//创建widget的唯一标识const MyApp({Key? key}) : super(key: key);//重写build方法Widget build(BuildContext context) {// ChangeNotifierProvider 会返回一个 ChangeNotifier 对象,它允许消费者在 CounterState 对象发生变化时收到通知。return MaterialApp(home: const YcHomePage(),theme: ThemeData(pageTransitionsTheme: const PageTransitionsTheme(builders: {TargetPlatform.android: SharedAxisPageTransitionsBuilder(transitionType: SharedAxisTransitionType.scaled,),TargetPlatform.iOS: SharedAxisPageTransitionsBuilder(transitionType: SharedAxisTransitionType.scaled,),})),);}
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计科web常见错误排错【HTTP状态404、导航栏无法点开、字符乱码及前后端数据传输呈现、jsp填写的数据传到数据库显示null、HTTP状态500】

web排错记录 在使用javaweb的过程中会出现的一些错误请在下方目录查找。 目录 错误1&#xff1a;HTTP状态404——未找到 错误2&#xff1a;导航栏下拉菜单无法点开的问题 错误3&#xff1a;字符乱码问题 错误4&#xff1a;jsp网页全部都是&#xff1f;&#xff1f;&#x…

【单片机】MSP430F149单片机,晨启,音乐播放器,蜂鸣器音乐

四、音乐播放器 任务要求&#xff1a; 设计制作一个简易音乐播放器&#xff08;通过手柄板上的蜂鸣器发声&#xff0c;播放2到4首音 乐&#xff09;&#xff0c;同时LED模块闪烁&#xff0c;给人视、听觉美的感受。 评分细则&#xff1a; 按下播放按键P15开始播放音乐&#x…

【C++】继承基础知识及简单应用,使用reportSingleClassLayout(在Visual Studio开发人员命令提示窗口)查看派生类详细信息

author&#xff1a;&Carlton tag&#xff1a;C topic&#xff1a;【C】继承基础知识及简单应用&#xff0c;使用reportSingleClassLayout&#xff08;在Visual Studio开发人员命令提示窗口&#xff09;查看派生类详细信息 website&#xff1a;黑马程序员C date&#xf…

微信小程序原生上传图片和预览+云函数上传

1.前台页面 1.1wxml问阿金 <!-- 说明一个上传页面的按钮 --> <button type"primary" bindtap"uploadPage">上传页面展示</button> <!-- 声明一个上传服务器的按钮 --> <button type"warn" bindtap"uploadSeve…

第四讲:MySQL中DDL一些基本数据类型及表的创建、查询

目录 1、创建表:2、DDL一些基本数据类型&#xff1a; 1、创建表: 部分单词及解析&#xff1a; 1、tables:表 2、comment:评论&#xff0c;解释 3、gender:性别 4、neighbor&#xff1a;邻居 1、创建表&#xff1a;&#xff08;注&#xff1a;在自定义数据库操作&#xff0c;…

spring中bean实例化的三种方式 -- Spring入门(二)

文章目录 前言1.Bean实例化简介2.bean的实例化 -- 构造方法3.bean的实例化 -- 静态工厂实例化4.bean实例化 -- 实例工厂和FactoryBean5.三种bean实例化方式的区别 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。…

Leetcode 112. 路径总和

题目链接&#xff1a;https://leetcode.cn/problems/path-sum/description/ 思路 递归&#xff0c;先序遍历二叉树&#xff0c;每遍历一个节点便减去当前存储值&#xff08;targetSum targetSum - root.val&#xff09;&#xff1b;当到达某个节点等于targetSum (targetSum…

labview 子画面插入面板

1.前言 在前面一篇文章中描述了弹框式显示子画面&#xff0c; labview 弹窗(子vi)_weixin_39926429的博客-CSDN博客 本文介绍插入式显示子画面。 本文的主题在以前的文章中介绍过&#xff0c; labview 插入子面板_labview插入子面板_weixin_39926429的博客-CSDN博客 借用…

机器学习算法分类

机器学习根据任务的不同&#xff0c;可以分为监督学习、无监督学习、半监督学习、强化学习。 1. 无监督学习 训练数据不包含任何类别信息。无监督学习里典型例子是聚类。要解决的问题是聚类问题和降维问题&#xff0c;聚类算法利用样本的特征&#xff0c;将具有相似特征的样本…

微服务 云原生:搭建 K8S 集群

为节约时间和成本&#xff0c;仅供学习使用&#xff0c;直接在两台虚拟机上模拟 K8S 集群搭建 踩坑之旅 系统环境&#xff1a;CentOS-7-x86_64-Minimal-2009 镜像&#xff0c;为方便起见&#xff0c;直接在 root 账户下操作&#xff0c;现实情况最好不要这样做。 基础准备 关…

React18和React16合成事件原理(附图)

&#x1f4a1; React18合成事件的处理原理 “绝对不是”给当前元素基于addEventListener做的事件绑定&#xff0c;React中的合成事件&#xff0c;都是基于“事件委托”处理的&#xff01; 在React17及以后版本&#xff0c;都是委托给#root这个容器&#xff08;捕获和冒泡都做了…

【java】java中注解的简介,如何自定义注解,有哪些类型,有什么作用

java注解 注解的定义 Java 注解用于为 Java 代码提供元数据。作为元数据&#xff0c;注解不直接影响你的代码执行&#xff0c;但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。 首先要明确一点的是&#xff0c;注解并没有实际的作用&…

八股文(消息队列)

文章目录 1. RabbitMQ特点2. 如何保证消息的可靠性3. RabbitMQ消息的顺序性4. 实现RabbitMQ的高可用性5. 如何解决消息队列的延时以及过期失效问题&#xff1f;6. RabbitMQ死信队列7. RabbitMQ延迟队列8.RabbitMQ的工作模式9. RabbitMQ消息如何传输10. 核心概念10.1 生产者和消…

SpringBoot整合Spring Security实现权限控制

文章目录 Spring Security介绍Spring Security案例1、快速搭建一个springboot工程2、导入SpringSecurity整合springboot工程3、认证3.1、登录流程校验3.2、入门案例的原理3.3、实现思路3.4、实现认证流程&#xff08;自定义&#xff09;3.5、正式实现3.5.1 实现数据库的校验3.5…

python node Ubuntu 安装软件、删除软件 、更新软件 中的 软件源概念

在Node 用npm 安装软件 在Python 用 pip 安装软件 在Ubuntu 用 apt 、apt-get 、snap 安装软件 因为这三款软件 都是国外的&#xff0c; 软件包&#xff08;模块&#xff09;都放在国外的&#xff0c; 安装 、更新 特别慢 Node中配置 下载源 在 node 中 要配置 下载的的地址…

【C语言初阶】指针的运算or数组与指针的关系你了解吗?

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言&#x1f4ac; 指针运算&#x1f4ad; 指针-整数&#x1f4ad; 指针-指针&#x1f4ad; 指针…

关于K8s的Pod的详解(一)

关于K8s的Pod的详解&#xff08;一&#xff09; Pod和API server的通信加快Pod启动更改Pod的资源Pod 的持久卷的单个访问模式Pod 拓扑分布约束Pod 拓扑分布中的最小域数 Pod 作为k8s创建&#xff0c;调度&#xff0c;管理的基本单位。由上级的Controller对Node上安装的Kubelet发…

电脑安装双系统ubuntu18.04+windows后开机直接进入Windows解决方法

电脑型号&#xff1a;联想拯救者Y9000K2021H 系统&#xff1a;Windows11Ubuntu18.04双系统 问题&#xff1a;笔记本安装双系统后&#xff0c;Windows系统下处理word或者看论文&#xff1b;Ubuntu18.04系统安装ros进行机械臂控制等的研究。但最近开机后发现没有系统选项了&#…

网络传输媒体

物理层下面的传输媒体分为两种&#xff1a;导向型传输媒体和非导向型传输媒体。 一、导向型传输媒体 同轴电缆&#xff1a; 图示&#xff1a; 分类&#xff1a; 基带同轴电缆&#xff1a;用于数字传输&#xff0c;在早期局域网中广泛使用宽带同轴电缆&#xff1a;用于模拟传输…

数据结构之BinaryTree(二叉树)的实现

BinaryTree要实现的方法 总结 remove不在BinNode里&#xff0c;而是BinTree里 递归的两种写法 从上往下&#xff1a;同一对象的递归&#xff08;参数多一个&#xff0c;判空用一句话&#xff09;&#xff0c;子对象的递归&#xff08;参数void&#xff0c;判空用两句话&#…