Flutter路由动画Hero函数的使用

devtools/2025/1/12 3:48:15/

Hero用于实现两个页面切换的过渡效果

以下示例:展示的是HeroPage切换到Hero2Page过程中 图片平滑放大的过程

Hero函数有两个重要的参数

tag:标识两个路由切换的共享参数,因为是HeroPage到Hero2Page切换,这里指定tag是tag1

chlid: 指定路由切换时,需要产生动画效果的子控件,这里用的时Image,动态变化的属性是宽高。

class HeroPage extends StatefulWidget {const HeroPage({super.key});@overrideState<StatefulWidget> createState() {return _HeroState();}
}class _HeroState extends State<HeroPage> {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("HeroPage"),),body: GestureDetector(child: const Center(child: Hero(tag: 'tag1', child: HeroImageWidget())),onTap: () {Navigator.push(context,MaterialPageRoute(builder: (BuildContext context) {return const Hero2Page();}));},),);}
}class Hero2Page extends StatelessWidget {const Hero2Page({super.key});@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("Hero2Page"),),body: Center(child: Hero(tag: 'tag1',child: HeroImageWidget(width: MediaQuery.of(context).size.width,height: MediaQuery.of(context).size.height,)),));}
}

写Hero切换效果存在一定的套路,比如说开始页面HeroPage指定为StatefulWeight, 页面中存在state的变动,然而目标路由没有关系StatelessWidget也可以。

Hero动画中重要是攻略child:这个参数子控件的变化效果。


http://www.ppmy.cn/devtools/149772.html

相关文章

【大模型 RAG技术】Elasticsearch (ES) 构建一个基于 RAG问答系统

要利用 Elasticsearch (ES) 构建一个基于 RAG&#xff08;Retrieval-Augmented Generation&#xff09;的应用&#xff0c;你可以按照以下步骤进行&#xff1a; 1. 准备数据 首先&#xff0c;你需要将 result.txt 文件中的数据转换为适合 Elasticsearch 的格式。假设你的数据…

c++入门之 命名空间与输入输出

1、命名空间 1.1使用命名空间的原因 先看一个例子&#xff1a; #include <iostream>int round 0;int main() {printf("%d", round);return 0; }请问&#xff0c;这个程序能跑起来吗&#xff1f; 答案是否定的 原因是&#xff0c;当我们想创建一个全局变量 …

Linux下常用的IO模型

Linux下常用的IO模型&#xff1a; 1. 阻塞IO fgets read getchar fread fgetc recv recvfrom 1. 让多个IO事件以同步方式处理&#xff0c; 2. 多个IO事件之间互相影响 3. CPU占有率低 2. 非阻塞IO 将IO对应的文件描述符设置成…

如何学习Vue设计模式

如何学习Vue设计模式 Vue 设计模式是 Vue.js 框架中用于解决常见问题的可复用解决方案。这些模式帮助开发者更有效地组织和管理代码&#xff0c;提升代码的可维护性、可扩展性和可读性。以下是一些常见的 Vue 设计模式&#xff1a; 1. 数据存储模式 可组合函数&#xff1a;用…

vue3使用vue3-video-play播放m3u8视频

1.安装vue3-video-play npm install vue3-video-play --save2.在组件中使用 import vue3-video-play/dist/style.css; import VideoPlay from vue3-video-play;// 视频配置项 const options reactive({src: https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8, //视频源mute…

leetcode 面试经典 150 题:两数之和

链接两数之和题序号1题型数组解题方法1. 哈希表&#xff0c;2. 暴力法难度简单熟练度✅✅✅✅✅ 题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输…

用c实现C++类(八股)

在 C 语言中&#xff0c;虽然没有内建的面向对象编程&#xff08;OOP&#xff09;特性&#xff08;如封装、继承、多态&#xff09;&#xff0c;但通过一些编程技巧&#xff0c;我们仍然可以模拟实现这些概念。下面将用通俗易懂的方式&#xff0c;逐步介绍如何在 C 中实现封装、…

怎么把word试题转成excel?

在教育行业、学校管理以及在线学习平台中&#xff0c;试题库的高效管理是一项核心任务。许多教育工作者和系统开发人员常常面临将 Word 中的试题批量导入 Excel 的需求。本文将详细介绍如何快速将试题从 Word 转换为 Excel&#xff0c;帮助您轻松解决繁琐的数据整理问题&#x…