Flutter 2023 Roadmap 解析

news2024/11/19 11:29:56

随着 Flutter Forward 大会召开, Flutter 官方在 3.7 版本 之余为我们展示了如 3D 渲染支持、add-to-web 等未来可能出现的 Feature,但是这些都还只是处于开发中,未来可能还会有其他变动,而在大会结束后,官方也公布了更详细 2023 年的 Roadmap。

Flutter Forward 展示未来大方面,Roadmap 展示接下来更详细的计划。

性能

首先 2023 年官方首要任务还是在于性能优化,也就是 Impeller ,3.7 开始 Impeller 已经可以在 iOS 上进行预览,那么下一步就是将 Impeller 提升为 iOS 的默认底层渲染器,从而解决陈年顽疾如色器编译器卡顿 的问题。

iOS 之后, Impeller 在 Android 上针对 Vulkan 支持和在桌面端的支持也会逐步推进,这将是 Flutter 2023 最让人期待的目标:全员 Impeller,相信自己的渲染器,修复器问题会比 Skia 更快?

对于 Web,Flutter 一直都存在两种底层 render 支持:html 和 canvaskit,而随着 Dart3 将直接支持 WebAssembly (使用 WebAssembly 规范的新 WasmGC 指令),Flutter 官方也将更多投入 WASM 路线

那么这是不是官方在二选一中做出了最终抉择?为此 Flutter Web 支持 “hot reload”(不仅仅是 “hot restart”) - #53041 相关进度目前也暂时停滞。

另外对于 Web 还有并计划实现多线程渲染 ,减少应用的下载大小,并提高自定义着色器的性能等相关计划

看起来 Flutter Web 的实用性在 2023 会被进一步增强。

最后关于 VM 的性能优化,官方在 2023 将致力于改进存分配策略,从而提高应用的响应速度和启动性能:

目前考虑是利用 v8 GC 的 RAIL(Response、Animation、Idle、Loading)模型,在不同阶段提供通知(就像它目前为 idle 所做的那样),并且 VM 可以相应地调整一些 GC 行为。

质量

首先 Flutter 官方很看重 Accessibility 的能力,所以 2023 年目标之一是:提高所有平台上的 Accessibility 的支持质量

虽然国内开发团队貌似对 Accessibility 并不是特别感冒。

同时继续改进 Flutter 相关的文档质量也是目标之一,其实从我个人来看,目前 Flutter 提供的各类文档的质量和覆盖已经相当不错了。

另外,2023 Flutter 还将继续完善所有平台上 UI 还原能力,尤其是 Android 和 iOS:

例如,预计今年 Cupertino 相关控件集将取得重大进展,让 iOS 平台能够保持最新状态并增加支持的 Widget 数量。

同时在界面相关方面,未来 Flutter 官方还计划实现:

  • Android 13 的预测后退手势: android:enableOnBackInvokedCallback ,主要是用于大屏幕和可折叠设备

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-32WwsnQR-1674963099345)(null)]

  • Android 手写输入支持

  • 相机插件移植到 Android 最新的 CameraX API

貌似 Android 14 也要来了,一波未平一波又起。

Features

2023 还会有一些实用的新功能,这些功能对于开发者来说应该是很迫切的需求,衡量它们的标准主要有:

  • 受欢迎程度(一个问题收到了多少“点赞”)
  • 平价性和可移植性(一旦一个平台支持后,它能不能给其他平台同时带来价值)
  • 能够达到一些更好的结果(例如可以进一步提高性能的新功能)。

所以 2023 预计要实现的功能有:

  • 自定义 asset 转换器,因为它们可以提高性能,例如在构建时对 icon fonts 进行转换,支持自定义 API,让第三方工具可以自定义转换
  • 优化可滚动控件,例 Table 和 Tree ,提供类似 builder 的懒加载能力 ,以此来应用的性能
  • 多窗口支持,特别是对于桌面端,因为这是一个呼声很高的功能,例如考虑在实现上通过三个打开的窗口共享相同的统一 widget-tree
  • macOS 和 Windows 上的 PlatformView 支持,也是呼声很高的功能
  • 边界拖放 能力的支持。
  • iOS 上支持的无线调试
  • 自定义 “flutter create” 模板,从而更好支持如 Flame 引擎引导。
  • 支持 element embedding ,也就是 add-to-web - #32329, 从而开发人员可以将 Flutter 内容添加到任何 Web <div>

都是很值得期待的功能,期待下个版本时能够用上。

研究

由于 Impeller 的到来,未来 Flutter 可能会支持某种形式的自适应布局,从而实现更贴近平台特性的 UI 效果

这个探索会先从 Android 与 iOS 开始,这类支持可以很好补全目前 Flutter 上,针对某些平台特性需要在业务代码上额外适配的问题。

另外 Flutter Forward 提到的 3D 能力,也在今年的实验范围之内,同时利用 Impeller 改进底层 dart:ui API 和新的着色器等相关能力,也是探索的目标之一。

与此相关的还有 Display P3 宽色域支持(可能会从 iOS 开始),这也是一项要求很高的功能

这个改进总觉得可能会引发其他坑。。。。

除此之外,Flutter 还在研究从 ICU4C 迁移到 ICU4X(新的基于 Rust 的 ICU 后端),这里需要探索如何将 Rust 嵌入到所有平台的构建渠道,如何在引擎和 Dart FFI 包之间共享 Rust 代码,以及如何对此类包中使用的二进制代码执行 tree-shaking。

最后,还有如何更新 Flutter SDK 使用 Dart 3 的新功能,例如更新我们的 API 使用 records 和 patterns,更新我们的工具链支持 RISC-V,还有使用插件的新 FFI 功能等。

发布

2023 年计划发布 4 个稳定版本和 12 个 Beta 版本,在 2023 年不一样的地方是新功能在 Beta 时 Flutter 团队就会对外公布它们,而不是和之前一样等倒它们进入 Stable 版本。

也就是官方鼓励开发者更多投入到 Beta 的尝试中来,我忽然想起 Android Studio Canary 版本貌似比 Release 更稳定的现状····

非目标的功能

目前 Web 上实现 hot reload 暂时停滞,因为 Flutter 的 Web 团队目前都在致力于 Wasm 的生产支持。

另外,对于以下功能 Flutter 团队目前依旧没有支持的计划:

  • code push
  • 对可穿戴设备(Apple Watch、Android Wear)
  • 汽车集成 的内置支持
  • 对 Web SEO 的 内置支持
  • 通过 honebrew 安装

虽然以上一些功能的呼声虽然也很高,但是主要是因为一些技术可行性和成本相关等的考虑,一些不可行或者难以解决的问题会暂且被搁置。

对于 code push 的官方支持就不要期待了,这都多少年过去了,对于热门问题的修复顺序,具体可见:https://github.com/flutter/flutter/wiki/Popular-issues

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

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

相关文章

【GD32F427开发板试用】基于蓝牙模块的远程点灯演示

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;寒冰1988 一. 前言 感谢极术社区联合兆易创新组织的本次活动&#xff0c;很荣幸能够中签本次的试用机会&#xff0c;结合手里的外围模块&…

代码随想录算法训练营第31天 回溯算法 93.复原IP地址 78.子集 90.子集II

文章目录LeetCode 93.复原IP地址题目讲解思路LeetCode 78.子集题目讲解思路LeetCode 90.子集II题目讲解难点总结LeetCode 93.复原IP地址 题目讲解 思路 递归参数 startIndex一定是需要的&#xff0c;因为不能重复分割&#xff0c;记录下一层递归分割的起始位置。 本题我们还…

ubuntu1804搭建svo2.0环境并跑euroc数据集

0说明 整个SVO2.0环境搭建过程按照官网的说明进行(链接&#xff1a;https://github.com/uzh-rpg/rpg_svo_pro_open) 开发环境是ubuntu18.04ROS-Melodic 1工具安装 Install catkin tools and vcstools if you haven’t done so before. Depending on your operating system …

使用这个插件,fiddler抓包直接生成httprunner脚本

har2case可以将.har文件转化成yaml格式或者json格式的httprunner的脚本文件&#xff0c;生成.har格式文件可以借助 fiddler 或 Charles 抓包工具 友情提示&#xff1a; 录制脚本&#xff0c;只是一个过渡&#xff0c;从0到1的一个过渡&#xff0c;如果让你直接写脚本&#xff…

微信app hook修改剪刀石头布以及骰子思路

0x01 前言 该方法很简单&#xff0c;本次记录是为了加深对安卓hook技术的学习&#xff0c;以及进一步熟悉frida和objection的使用&#xff0c;如果只是想需要这个功能&#xff0c;推荐手机root后装微x模块 技术仅供分享&#xff0c;请勿用于非法用途 0x02 环境准备 首先需要准…

linux下更新tomcat版本

进入tomcat目录下查看当前版本号./version.sh2.切忌升级之前一定要备份老版本mkdir tomcat-backup3.拷贝老版本到你创建的文件夹中cp -rf apache-tomcat-9.0.45-stunew/ tomcat-backup/4.下载tomcat安装包&#xff0c;随便你下载什么版本&#xff0c;我这里以68为例官网&#x…

ssm二手废旧塑料回收交易系统的设计与实现

内容是设计并且实现一个废旧塑料交易系统的设计与实现。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xff0c;Tomcat网络信息服务作为应用服务器。废旧塑料交易系统的设计与实现的功能已基本实现&#xff0c;主要包括用户、回收站、加工厂、预约信息、收购信息、交…

ARP协议与ARP地址欺骗防护

ARP协议 什么是MAC地址 MAC地址是固化在网卡上的网络标识&#xff0c;由Ieee802标准规定。 什么是广播 向同一个网段内的设备&#xff0c;发送数据包&#xff0c;广播IP地址是同网段最后一个IP地址。 认识ARP协议 ARP的全称是地址解析协议&#xff0c;我们通过ARP协议获取…

Webpack 运行时代码分析 - 动态加载

文章内容&#xff1a;用 webpack 打包含有动态加载的模块&#xff0c;分析打包后的代码&#xff0c;也就是 webpack 运行时代码。 先思考如下一些问题&#xff1a; 1.什么叫做动态加载 2.如果不使用 webpack 打包&#xff0c;能做到动态加载吗 3.webpack 是如何实现动态加载的…

安装mysql的保姆级教程

安装mysql的保姆级教程&#xff1a; 1.准备的条件 已下载mysql应用软件 my.ini文件&#xff08;见2&#xff09; 2.设置my.ini文件 &#xff08;1&#xff09;my.ini文件内容&#xff1a; [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 ----------是你的文件路径…

TCP/IP网络编程——基于 UDP 的服务端/客户端

完整版文章请参考&#xff1a; TCP/IP网络编程完整版文章 文章目录第 6 章 基于 UDP 的服务端/客户端6.1 理解 UDP6.1.1 UDP 套接字的特点6.1.2 UDP 的工作原理6.1.3 UDP 的高效使用6.2 实现基于 UDP 的服务端/客户端6.2.1 UDP 中的服务端和客户端没有连接6.2.2 UDP 服务器和客…

业务流程软件的优点和对企业的好处

我们都知道&#xff0c;CRM客户管理软件可以为企业识别意向客户&#xff0c;带来更多业绩。那么在处理业务的过程中&#xff0c;一套自带业务流程管理的CRM软件是否重要&#xff1f;下面我们来说说企业使用业务流程管理软件的好处&#xff0c;您就清楚问题的答案了。 1、减少错…

【项目精选】基于 Spring Boot + Mybatis Plus + MySQL 的社区居民联系方式管理系统

项目简介 此系统使用 Spring Boot Mybatis Plus Spring Security React Ant Design Pro 架构编写。数据库采用 MySQL&#xff0c;提供强大的、安全的和完整的管理社区居民的信息的功能。 安全性 此系统在系统层面提供了众多的安全特性&#xff0c;产品安全无忧。这些特性…

【高并发】- 生产级系统搭建 - 2

前言 本章讲解高并发系统中常见概念及相关设计的方案&#xff0c;目的是让小伙伴都了解高并发系统中&#xff0c;每个环节所涉及到的相关概念。帮助大家更好地理解和掌握高并发系统中的场景及设计思想。 1. 常见高并发系统架构图&#xff08;这里以秒杀系统为例&#xff09; 上…

国电投-光伏电站人工智能运维大数据处理分析比赛(记录)

前言 1-1 简介 DataFountain平台举办的比赛&#xff0c;赛题&#xff1a;光伏电站人工智能运维大数据处理分析。以下是比赛链接&#xff1a;光伏电站人工智能运维大数据处理分析 Competitions - DataFountain 1-2 任务背景 在分析光伏发电原理的基础上&#xff0c;论证了辐照…

虹科分享 | 2022年传感器事业部文章精选

2022年 文章精选 精选案例文章 虹科案例 | HK-Micronor光纤传感器应用领域介绍&#xff08;上&#xff09; 虹科案例 | HK-Micronor光纤传感器应用领域介绍&#xff08;下&#xff09; 虹科案例 | 如何更加准确的表征罐箱内燃油的质量规格&#xff1f; 虹科案例 | 监测各种…

java Vue+Springboot读书学习笔记共享平台

读书笔记共享平台的设计基于现有的网络平台&#xff0c;可以实现用户管理及数据信息管理&#xff0c;方便管理员对后台进行管理有详细的了解及统计分析&#xff0c;随时查看信息状态。 系统功能设计是在系统开发和设计思想的总体任务的基础上完成的。该系统的主要任务是实现读书…

CnOpenData中国保险机构网点全集数据

一、数据简介 改革开放以来&#xff0c;中国保险行业飞速增长&#xff0c;在补偿灾害损失、维护社会安定、支持中国的经济建设等方面发挥了重要作用。整个行业的突飞猛进体现在三个方面&#xff1a; 一是保险机构数量增长迅速。中国保险公司的数量从1980年的1家迅速增加至200多…

【云原生】Prometheus之图形化界面grafana与服务发现部署

内容预知 前言 1. 部署 Grafana 1.1 grafana的下载与安装 (1)安装grafana &#xff08;2&#xff09;配置数据源 &#xff08;3&#xff09;导入 grafana 监控面板 &#xff08;4&#xff09;删除模板操作 4.2 grafana的中文插件安装 2. 部署 Prometheus 服务发现 2.1…

C语言中二维数组的基本使用 定义 赋值读写指定元素的值 作为函数参数传递的注意点

文章目录问题依次解决C语言中二维数组如何定义、如何一次性赋值&#xff1f;如何使用 sizeof() 计算二维数组的行数、列数&#xff1f;【与定义数组的地方&#xff0c;在同一作用域内可用】如何读写指定位置的元素&#xff1f;【不同作用域&#xff0c;有两种方式】不同作用域内…