Flutter学习 ---- 屏幕截图和高斯模糊

Flutter 实现背景高斯模糊并拦截手势 Flutter 实现背景高斯模糊并拦截手势 在flutter中可以通过一个Widget直接实现背景模糊效果:BackdropFilter 源码介绍如下(例子被我省略了,大家可以直接查看源码的时候去看一下): /// A widget that applies a filter to the existing painted content and then /// paints [child]. ... 阅读详情

废话不多说,先上本次要实现的效果图。
效果

Gif格式是渣像素,实际效果要自然的多。这个项目其实是看到小池记账小程序后实现的一个类似效果,小池比较闪光的一点就是这个主界面的动态高斯模糊效果,不过小池的动态模糊效果就不如Flutter可以做的这么自然流畅了,模糊时还是有肉眼可见的卡顿的。大家可以搜索小池记账对比一下,下面进入正文。

知识点

  1. Flutter中如何截取当前屏幕的Widget图片。
  2. Flutter如何对一张图片进行高斯模糊。
  3. 如何淡入淡出切换两个Widget。

Flutter截取当前屏幕的Widget图片

  1. 目前官网文档还没有相关的例子,正式发布的Beta3版本也没有公开的方法,但事实上,在未公开发布的Flutter v0.4.4中,已经有截取当前屏幕Widget图片的文档了,地址在这里。我们需要切换到当前的开发分支才能看到这个新的方法toImage()。你可以直接在Flutter的本地git仓库checkout到master分支,当然,也可以用下面更简单的方法,运行这两个命令,Flutter会自动切换到最新分支并下载依赖,到这里,准备工作就算完成了。
flutter channel master
flutter doctor -v
  1. 给需要截图的Widget包裹一个RepaintBoundary,如下示例代码:
class _PngHomeState extends State<PngHome> {
   
   
  GlobalKey globalKey = new GlobalKey();

  // 截图boundary,并且返回图片的二进制数据。
  Future<Uint8List> _capturePng() async {
    RenderRepaintBoundary boundary = globalKey.currentContext.findRenderObject();
    ui.Image image = await boundary.toImage();
    // 注意:png是压缩后格式,如果需要图片的原始像素数据,请使用rawRgba
    ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
    Uint8List pngBytes = byteData.buffer.asUint8List();
    return pngBytes;
  }

  @override
  Widget build(BuildContext context) {
    return RepaintBoundary(
      //globalKey用于识别
      key: globalKey,
      child: Center(
        child: FlatButton(
          child: Text('Hello World', textDirection: TextDirection.ltr),
          onPressed: _capturePng,
        ),
      ),
    );
  }

目前这个方法还是挺费时间的,大概在100ms左右才能得到截图,更别说我们还要对图片做处理,所以,尽管我对生成的图片做了缓存,但是第一次得到图片的时候,还是会有一小会的停顿(200-300ms)

对得到的图片进行高斯模糊

拿到了图片的二进制数据,怎么对其进行高斯模糊?搜索官网发现了一个很好的库:image,把它添加到项目中来,在pubspec.yaml中添加如下代码:

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.0
  image: "^1.1.32"

然后在项目中import,注意取一个别名,不要跟Flutter已有的Image库冲突:

impor
安卓自动化新思路:不用Appium!YOLO+ADB实现精准点击(避坑指南) 本文介绍了一种创新的安卓自动化方案,通过结合YOLO目标检测和ADB命令实现精准点击,特别适用于游戏界面、动态内容等传统工具难以处理的场景。该方案不依赖控件层级信息,能像人类一样识别屏幕内容,实测点击准确率比XPath定位高37%,响应速度快2.8倍。文章详细讲解了环境配置、模型训练、工程实现及性能优化技巧,为移动端自动化提供了新思路。 阅读详情

相关推荐

Large Action Models(LAM)实战指南:让大模型真正动手干活

Large Action Models(LAM)代表了AI从语言理解迈向物理/数字世界执行的关键范式跃迁——它不再满足于生成文本,而是将动作建模为可预测、可生成、可验证的token序列。其核心原理在于将GUI交互、多步骤状态依赖任务转化为序列生成问题,依托多模态上下文(截图+OCR+可访问性树)实现像素级动作定位。技术价值体现在工程可控性:通过四阶段训练(Task-Plan预训练→专家示范→自我探索→奖励模型微调),显著提升任务成功率(TSR)与步骤鲁棒性(SSR)。典型应用场景覆盖办公自动化(Excel筛

vanadiumlin 550

Flutter实现动态高斯模糊

一个App加上高斯模糊会形成一种高级的感觉,本文将介绍如何制作一个根据背景内容来动态高斯模糊,效果如下动态高斯模糊AppBar本质上是一个,我们不直接通过的属性来设置,而是将我们需要的放在属性里面,至于为什么不能放在属性里面呢,最主要的原因是,的属性是顶级组件,在以外的任何组件都无法覆盖或置于其下,而我们的主要实现思路是通过组件的堆叠以及的位置设置来实现此效果 创建自定义嵌套导航路由 App结构构建 为了使代码更好的管理和维护,我们对页面使用三层架构模式,即分为`state`、`logic`、`view`

qianxiamuxin的博客 1046

Flutter实现动态高斯模糊效果的AppBar

本文还有配套的精品资源,点击获取 简介:本文详细介绍了如何利用Flutter框架构建一个具有动态高斯模糊效果的AppBar。这种AppBar能够在用户滚动页面时改变其背景模糊程度,增强视觉吸引力。我们将通过自定义AppBar类、使用 BackdropFilter 和 BoxShadow ,以及监听滚动事件等步骤来实现这一效果,并讨论了性能优化的可...

weixin_26805451的博客 1610

flutter_screenshot_callback:Flutter插件,可让您检测移动屏幕截图并在iOS和Android上执行回调函数。 :rocket:

屏幕截图回调 Flutter插件,可让您检测移动屏幕截图并在iOS和Android上执行回调函数。 :rocket: ••• ! 用法 导入包裹 要使用此插件,请按照。 使用插件 将以下导入添加到您的Dart代码中: import 'package:screenshot_callback/screenshot_callback.dart' ; 使用所需的范围初始化ScreenshotCallback: ScreenshotCallback screenshotCallback = ScreenshotCallback (); addListener 然后调用ScreenshotCallback addListener方法。 添加检测屏幕截图后要执行的自定义功能。 例如: screenshotCallback. addListener (() { //Void funtions are

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2316

FPGA AXI DDR3读写时序调试与FIFO缓存实战解析

本文深入解析FPGA中AXI协议与DDR3的读写时序调试,重点探讨FIFO缓存在数据流控制中的关键作用。通过实战案例详细讲解突发传输中的地址对齐、数据分片等常见问题,并提供状态机设计、仿真波形分析和性能优化技巧,帮助开发者高效解决高速数据存储场景下的时序同步与数据一致性问题。

blockchain9miner的博客 1118

HALCON基于描述符的模板匹配(未标定)

HALCON基于不标定描述符的模板匹配

king_linj的博客 890

逆向实战:从x-mini签名到RPC调用,Frida动态分析小红书加密协议

本文通过实战案例,详细拆解了小红书App的加密协议逆向分析过程。从识别x-mini签名等关键参数入手,结合静态分析与Frida动态Hook技术,追踪到核心的RPC调用入口,并最终封装成可独立调用的RPC函数,为安全研究和协议理解提供了完整的技术路径。

moss5的博客 1031

【2026OD新机考】【哈希表】20260422-文章特征提取【Py/Java/C++/C/JS/Go六种语言OD真题】【欧弟算法】全网注释最详细分类最全的华子OD真题题解

90+天陪伴式学习,100+直播课时,300+动画图解视频,500+LeetCode经典题,500+华为OD真题/大厂真题,还有简历修改、模拟面试、陪伴小群、资深HR对接将为你解锁。这道题的本质是多集合交集问题的变形,属于非常典型的哈希表应用题。,储存全局的每个片段中,各个字符最少出现的次数。表示该字母并非所有片段的公共字母。,按照顺序构建答案即可。没有字母在所有三个字符串中都出现。每个字母在各字符串中都至少出现。次,所以结果中每个字母出现一次。这样,当上述循环结束后,最终。显然在上述代码中,如果字母。

weixin_48157259的博客 66

揭秘CAS:深入理解与应用解析

在并发编程中,Compare-And-Swap(CAS)机制作为一种无锁算法,凭借其高效性和避免线程阻塞的优势,受到广泛关注。CAS不仅在底层实现上有着重要地位,还在实际开发中发挥着关键作用。本文将从CAS的工作原理、在Java中的实现及其增强机制来回顾和加深理解一下CAS。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 85万+

vue2/3 - 详细实现内网使用离线高德地图功能,在vue中无需网络离线使用高德地图相关功能,高德地图如何离线加载详细教程(内网部署及使用),提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制

vue,vue2,vue3,高德地图,离线使用高德地图,高德地图瓦片官方下载,vue内网使用高德地图离线无网络,断网情况下使用高德地图,vue离线高德地图教程,如何实现内网部署高德地图,无需联网离线使用,vue+ts实现离线高德地图 内网离线高德地图,如何在高德地图Vue项目中下载离线地图,高德离线地图加载不出来,高德地图离线使用不显示怎么办,怎么解决vue内网使用离线高德地图加载失败问题,vue实现离线地图+高德瓦片,vue引入高德离线地图,vue项目如何使用离线高德地图和自定义地图样式,高德离线地图的下

✅ 精选推荐文章 1万+

华为OD机试 - 取出尽量少的球 - 感谢@吴修柯反馈(Python/JS/C/C++ 双机位A卷 200分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。感谢@吴修柯反馈,2025-03-22,A卷200分考试真题。某部门开展 Family Day 开放日活动,其中有个从桶里取球的游戏。有 N 个容量一样的小桶等距排开,且每个小桶都默认装了数量不等的小球,每个小桶装的小球数量记录在数组 bucke

学Java,找哪吒 1485

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 为什么在Go语言中要少用interface{}
下一篇: Flutter学习 ---- TravisCI加持
csdnYF
博客等级 码龄12年 406粉丝 32原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值