当前位置: 首页 > news >正文

flutter开发实战-hero动画简单实现

flutter开发实战-hero动画简单实现

使用Flutter的Hero widget创建hero动画。 将hero从一个路由飞到另一个路由。 将hero 的形状从圆形转换为矩形,同时将其从一个路由飞到另一个路由的过程中进行动画处理。

Flutter Hero动画 Hero 指的是可以在路由(页面)之间“飞行”的 widget,简单来说 Hero 动画就是在路由切换时,有一个共享的widget 可以在新旧路由间切换。
在这里插入图片描述

在这里插入图片描述

一、实现hero动画

实现当前页面飞行到另一个页面,页面通过Navigator跳转到另一个路由。hero动画需要一个tag,Hero控件的一个标签,用来判定唯一性。

class HeroDemoPage extends StatefulWidget {
const HeroDemoPage({super.key});

@override
State createState() => _HeroDemoPageState();
}

class _HeroDemoPageState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(“hero page”),
),
body: GestureDetector(
onTap: (){
Navigator.push(
context,
MaterialPageRoute(builder: (context) => HeroSecondPage()),
);
},
child: Center(
child: Hero(
tag: “xx”,
child: Container(
height: 200,
width: 300,
child: Image.network(“https://d-ssl.dtstatic.com/uploads/blog/202204/13/20220413091711_29352.thumb.1000_0.jpg_webp”),
)
)
),
)
);
}
}

飞入另一个路由的界面

class HeroSecondPage extends StatefulWidget {
const HeroSecondPage({super.key});

@override
State createState() => _HeroSecondPageState();
}

class _HeroSecondPageState extends State {
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
appBar: AppBar(
title: Text(“hero预览”),
),
body: GestureDetector(
onTap: (){
Navigator.pop(context);
},
child: Column(
children: [
Hero(
tag: “xx”,
child: Image.network(“https://d-ssl.dtstatic.com/uploads/blog/202204/13/20220413091711_29352.thumb.1000_0.jpg_webp”),
),
const Text(“预览图片”,
style: TextStyle(decoration:TextDecoration.none,
fontSize: 20)),
],
)
)
);
}
}

二、小结

flutter开发实战-hero动画简单实现

学习记录,每天不停进步。

http://www.lryc.cn/news/204048.html

相关文章:

  • Spring Boot + EasyUI 创建第一个项目(一)
  • 短视频矩阵系统源码/技术应用搭建
  • 硬核子牙:我准备写一本《带你手写64位多核操作系统》的书!
  • c++访问修饰符与继承关系
  • 【RTOS学习】事件组 | 任务通知
  • 【TES605】基于Virtex-7 FPGA的高性能实时信号处理平台
  • Java Azure开发 使用已有token字符串创建GraphServiceClient
  • 【Qt】消息机制和事件
  • 爬虫模拟用户登录
  • asp.net企业招聘管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio计算机毕业设计
  • 艾泊宇产品战略:假如中国禁止直播带货,网红和店家该如何应对?
  • C#调用C/C++从零深入讲解
  • MyBatis篇---第五篇
  • 十三水中各种牌型判断LUA版
  • 2023.10.19 关于设计模式 —— 单例模式
  • 4个鲜为人知的Python迭代过滤函数
  • 使用logger.error(“自定义错误信息描述“,e)将错误信息输出到日志文件上
  • 音乐的数字未来:虚拟演唱会与TikTok的巅峰融合
  • 基于图像识别的跌倒检测算法 计算机竞赛
  • NSS [SWPUCTF 2021 新生赛]PseudoProtocols
  • 字节码进阶之JVM Attach API详解
  • Kubernetes 部署 kubeflow1.6.1
  • 设计模式:建造者模式(C#、JAVA、JavaScript、C++、Python、Go、PHP)
  • Maxon Cinema 4D 2024:打造独一无二的视觉效果 模拟模块大更新
  • 16.2 ARP 主机探测技术
  • 三级等保-linux服务器三权分立设置
  • 抓取网页的含义和URL基本构成
  • 计算机毕业设计 机器学习深度学习人工智能
  • 施密特正交化
  • 低代码开发:加速应用开发的利器