Flutter 3.24 对普通开发者有哪些影响?

news2024/11/15 21:48:42

哈喽,我是老刘

Flutter 3.24刚刚发布了。突然觉得时间过得好快。六年前刚开始使用Flutter 1.0的场景还在眼前。

随着Flutter团队老成员的回归和新成员的加入。
前段时间Flutter团队裁员的影响似乎也逐步消退了。
新版本发布的功能逐步回到了该有的状态。

这里盘点一下我觉得对大多数普通开发者来说有影响的或者有价值的功能,想看完整功能列表的同学可以去看官方的文章。

Flutter框架更新

1、增加了三个Sliver组件

  • SliverFloatingHeader
  • PinnedHeaderSliver
  • SliverResizingHeader

它们与现有的 SliverPersistentHeader 和 SliverAppBar 类似,但 API 更简单,可以组合使用以实现更好的效果。
以下是PinnedHeaderSliver的效果:

PinnedHeaderSliver.gif

这几个效果可以说是开发中常用的了。
基本上大一点的项目中都能看到,这次简化了API对大家应该还是有帮助的。
不过如果像我们一样,已经在项目中封装了自己的实现,可能就用不到了。
当然也可以考虑有新需求的时候逐步切换到新组件。

2、轮播组件:CarouselView

和前面的Sliver组件一样,轮播是一个非常常用的功能。
特别是滚入和滚出时可以动态改变大小,可以说是非常实用的功能了。

CarouselView.gif

3、TreeView

这是一个Flutter官方开发的三方库:two_dimensional_scrollables中的功能。
其中的TreeView,常见于pc端文件管理器里面的树状视图。
还有TableView非常适合构建高级表格类程序。

TreeView (1).gif

感觉这个库主要适用于pc端的一些应用开发,手机端可能用到的少一点。

引擎

Impeller

在Android端继续是预览版也继续稳步进行优化。
Impeller的推进和我们普通开发者的关系不是特别大。
除了我之前文章中提到的那些低性能平台,一般的手机或者PC端开发,耐心等待即可。

Flutter GPU

这是一个相对比较重磅的功能。
简单来时就是让开发者可以自定义渲染器。
当我们需要在应用中绘制现有框架很难实现的高级图形以及3D图形时,Flutter GPU功能将为我们提供强大的支撑。
当然,一般来说普通App是用不到的。
我记得大概两年前有一家基于Flutter开发室内装修效果App的公司想挖我。
他们的场景中就可能会用到这个功能。
再一个我能想到的使用场景就是游戏了。
除此以外我真是想不到还有啥场景会用到这么底层的功能。
大家如果有使用场景欢迎评论区回复,让我张张见识。

Web:多视图嵌入

这个功能本身是将多个独立的Flutter视图集成到现有的Web应用中。
可以想象这是一个挺复杂的场景。
现阶段Flutter for web的一个思路就是将Flutter内容和web进行融合。
我觉得这是一个很好的思路,毕竟Flutter代替web开发能看到不少的问题。
但是融合方案就好像原生+Flutter混合开发一样,可以分别发挥各自的优势。

生态系统:Shared Preferences 插件更新

这个功能新增的API我觉得倒在其次。
主要是 Android 实现从 Shared Preferences 变成了 Preferences DataStore。
DataStore从性能到更复杂的数据类型再到线程安全,已经全面超越了老旧的Shared Preferences 。
很多原生的Android客户端已经替换到了DataStore。
这一次Flutter库直接支持其实是提供了很大方便的。
特别是对于纯Flutter开发的app,可以很大的提升用户配置数据的读写性能和安全性。

DevTools

其实每一个Flutter新的发布版本基本都会对DevTools进行改进。
而且基于大量用户实际工作中调试优化碰到的问题和需求,这些改进大部分都是很实用的。
这一次的查看每一帧中Widget构建次数的功能也是如此。
检查Widget构建次数是否符合预期可以帮助我们快速定位Flutter页面性能问题的大致范围。
开启的位置是DevTools Performance 工具中的 Rebuild Stats 功能:

image.png

总结

这个版本应该是Flutter老成员回归和新人加入后的第一个版本。
可以看到团队趋于稳定,对功能的更新推进也很积极并且接地气。
我前面只整理了我认为对我们普通开发者影响比较大的功能。
其它例如互动式媒体广告 (IMA) 插件这样的功能,因为国内开发者可能用不到,也就没有提及。
感兴趣的同学可以去看官方博客的详细文章。

如果看到这里的同学有学习Flutter的兴趣,欢迎联系老刘,我们互相学习。
点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。
可以作为Flutter学习的知识地图。
覆盖90%开发场景的《Flutter开发手册》icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzkxMDMzNTM0Mw==&mid=2247483665&idx=1&sn=56aec9504da3ffad5797e703c12c51f6&chksm=c12c4d11f65bc40767956e534bd4b6fa71cbc2b8f8980294b6db7582672809c966e13cbbed25#rd

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

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

相关文章

解决域名加别名后再代理或者映射到fastadmin项目

如果遇到微应用不想再添加或者不方便添加单独的二级域名时,就需要用到代理或者映射来进入到我们的微应用项目中。 可以修改route.php路由文件的下面这个参数 __alias__ > [别名 > 模块/控制器] 如图 然后再修改config.php文件里面的view_replace_str参数…

C++入门基础知识11

C 关键字 下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。 !!!完整关键字介绍 (下一篇博文中将详细罗列介绍)

内网穿透:打破网络边界的神奇钥匙

在数字化时代,我们每天都在使用各种网络设备,但你是否曾想过,家里的智能摄像头、私人服务器或是游戏主机,如何能够在远离家的地方也能轻松访问? 这就需要涉及到内网穿透技术了。今天,我们就用简单的例子来揭…

coze 工作流使用

什么是工作流 工作流就是将一系列的逻辑节点串起来的流程,例如我们做一个爬虫,第一步先爬取网页内容,第二步数据清洗,得到我们想要的数据,第三步存到数据库。这里每步就是一个逻辑节点,她们之间有先后或是…

如何用不到一分钟的时间将Excel电子表格转换为应用程序

我们大多数人对电子表格又爱又恨。当企业需要分析数据、为决策过程提供信息并可视化信息时,Excel和Google Sheets是首选。这些文档非常容易创建,它们帮助我们以直接的方式构建相关的想法和适用的数据。除此之外,事情可能会变得一团糟。 对于…

服务注册中心--Eureka

一.Eureka概述 Eureka是一个基于REST的服务,主要用于AWS(Amazon Web Services 亚马逊云计算服务)云中的定位服务,以实现中间层服务器的负载平衡和故障转移在 Spring Cloud 微服务架构中通常用作注册中心, 我们称这个服务为 Eureka Server,还…

springboot学生作业管理系统---附源码14916

摘 要 在信息化社会中,人们需要针对性的信息获取途径。然而,由于不同角度和偏好的存在,人们经常只能获得特定类型的信息,这也是技术攻克难题之一。为了解决学生作业管理系统等问题,本研究通过分析和研究,设…

汽车免拆诊断案例 | 2011 款进口现代新胜达车智能钥匙系统有时失效

故障现象  一辆2011款进口现代新胜达车,搭载G4KE发动机,累计行驶里程约为26.3万km。车主进厂反映,有时进入车内按下起动按钮,发动机无法起动,且组合仪表黑屏。 故障诊断  接车后试车,车辆使用一切正常。…

Windows创建定时任务触发bat脚本 实现oracle数据库备份

Windows中的计划任务程序来触发oracle数据库备份脚本 任务计划程序 创建基本任务 填写名称、描述,下一步 触发任务:填写定时周期 操作:启动程序,选择要执行的bat脚本 点击完成,就能在任务列表中查看到我们刚才创…

【Linux】MySQL安装教程

Linux中MySQL安装教程 Step1:卸载系统自带的mysqlStep2:下载mysql8安装包Step3:上传mysql压缩包到 /opt 然后解压Step4:解压后按照如下顺序安装Step5:对mysql进行初始化Step6:修改mysql安装目录的所有用户和…

算法的学习笔记—在 O(1) 时间内删除链表节点

😀前言 在链表操作中,删除节点是一个常见的操作。然而,如何在最短的时间内完成删除节点的操作是一个值得探讨的问题。通常情况下,删除链表节点需要遍历链表来找到目标节点及其前驱节点,时间复杂度为 O(N)。但是&#x…

【Pyspark-驯化】一文搞懂Pyspark中对json数据处理使用技巧:get_json_object

【Pyspark-驯化】一文搞懂Pyspark中对json数据处理使用技巧:get_json_object 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 …

stm32入门学习13-时钟RTC

(一)时钟RTC stm32内部集成了一个秒计数器RTC,用于显示我们日常的时间,如日期年月日,时分秒等,RTC的主要原理就是进行每秒自增,如果我们知道开始记秒的开始时间,就可以计算现在的日…

Redis操作--RedisTemplate(二)StringRedisTemplate

一、介绍 1、简介 由于存储在 Redis 中的 key 和 value 通常是很常见的 String 类型,Redis模块提供了 RedisConnection 和 RedisTemplate 的扩展,分是 StringRedisConnection 和 StringRedisTemplate,作为字符串操作的解决方案。 通过源码…

JVM二:JVM类加载机制

目录 前言 1.什么是类加载? 2.类加载整体流程 3.一个类什么时候被加载? 4.双亲委派模型 4.1 JVM默认提供了三个类加载器 4.1.1 BootstrapClassLoader 4.1.2 ExtensionClassLoader 4.1.3 ApplicationClassLoader 4.2 破坏双亲委派模型 前言 在上一篇文章中&#xf…

江科大/江协科技 STM32学习笔记P21

文章目录 ADC模数转换器ADC简介逐次逼近型ADCSTM32的ADCADC基本结构输入通道转换模式单次转换,非扫描模式连续转换,非扫描模式单次转换,扫描模式连续转换,扫描模式 触发控制数据对齐转换时间校准硬件电路电位器产生可调电压的电路…

Python图像背景去除

目录 🎁库的导入 🎀库的安装 🎁rembg库去除背景 🎁效果 🎁文末彩蛋 今天来介绍一个特别有趣的python库,rembg库,全称是“Remove Background”的缩写,意为“去除背景”&#xff…

边缘计算与物联网实训室解决方案

一、引言 随着物联网(IoT)技术的迅猛发展,数据量呈爆炸性增长,对数据处理和实时响应能力提出了更高要求。传统的云计算模式由于数据传输延迟和带宽占用等问题,难以满足物联网场景中对低延迟和高可靠性的需求。边缘计算…

QT判断操作系统类型和CPU架构

一、判断操作系统类型 1.在.pro文件中判断 macx { # mac only } unix:!macx{ # linux only } win32 { # windows only }2.在代码中判断 可以包含QGlobal头文件&#xff0c;判断预定义宏 #include <QtGlobal> ... #ifdef Q_OS_MAC // mac #endif#ifdef Q_OS_LINUX // …

Datawhale X 魔搭 AI夏令营 Task1 从零入门AI生图原理实践笔记

赛题内容 参赛者需在可图Kolors模型的基础上训练LoRA模型&#xff0c;生成无限风格&#xff0c;如水墨画风格、水彩风格、赛博朋克风格、日漫风格… 基于LoRA模型生成8张图片组成连贯故事&#xff0c;故事内容可自定义&#xff1b;基于8图故事&#xff0c;评估LoRA风格的美感度…