2023 Flutter Forward 大会回顾,快来看看 Flutter 的未来会有什么

news2024/10/7 2:25:56

Flutter Forward 作为一场 Flutter 的突破性发布会,事实上 Flutter 3.7 在大会前已经发布 ,所以本次大会更多是介绍未来的可能,核心集中于 come on soon 的支持,所以值得关注的内容很多,特别是一些 Feature 让人十分心动。

开始之前

按照惯例,在展望未来之前需要先总结过去,首先,到目前为止已经超过 700,000 个已发布应用使用了 Flutter,例如腾讯知名的 PUBG 再次登上了大会 PPT。

另外,如 Google Classroom 团队也分享了他们使用 Flutter 开发的经历和收获,包括了代码复用率和开发效率等。

“使用 Flutter,我们将相同功能的代码大小减少了 66%……这意味着每个平台的错误更少,未来的技术债务也更少。”(Kenechi Ufondu,Google 课堂软件工程师)

另外从 Flutter 目前的用户数据情况看,当前阶段 Flutter 还是很受欢迎的。

而关于 Flutter 3.7 部分这里就不再赘述,感兴趣可以看前面已经发布的 Flutter 3.7 的更新说明 。

本次 Flutter 还安利了两个低代码的友商平台:FlutterFlow 和 WidgetBook

不得不说它们的成熟度都挺高的,例如 FlutterFlow 的在线调试运行和翻译支持就相当惊艳。

另外 WidgetBook 作为开源项目,它支持 Flutter 开发者针对自己的控件进行分类归纳,同时可以在使用 Widgetbook Cloud 的情况下,将 Widget 与 Figma 同步并和团队共享,为设计和开发人员提供更灵活的协作工具。

FlutterFlow 并不是完全免费哦。

Dart 3 alpha

本次大会的另外一个重点就是 Dart 3 alpha ,其实在此之前官方就有提前预热过,在《Flutter 的下一步, Dart 3 重大变更即将在 2023 到来》 里我们就提前预览过对应更新,其中大家最关注的莫过于 Records 和 Patterns 。

Records 支持高效简洁地创建匿名复合值,不需要再声明一个类来保存,而在 Records 组合数据的地方,Patterns 可以将复合数据分解为其组成部分

例如要将 geoLocation 上面的返回值(由一对整数组成的记录)解构为两个单独的 int 变量 latlong,就可以使用这样的 Patterns 声明。

Patterns 是完全类型安全的支持,并且会在开发过程中进行错误检查。

你还可以对值的类型进行 Patterns 匹配,通过 switch可以使用匹配类型的 Patterns ,以及每种类型的字段。

当然,Dart 3 还有一个重点就是 100% 空安全的要求,也就是不再支持非空安全的代码,这对于旧项目来说是很大的挑战,相信还是有相当一大部分人的 Flutter 项目一直维持在低版本。

Dart 3 还进行了很大程度的优化, 例如 Dart 3 进行了清理一些不必要的 API ,同时对编译做了很大的优化,例如下图是变异后的代码对比。

另外 Dart 3 将支持更多的平台架构,例如 RISC-V ,同时还在覆盖 Windows 上的 ARM64 支持,而 Web 上 Dart 3 也将可以脱离 Flutter 直接支持 WebAssembly (Wasm) 。

最后在新工具的支持下,Dart 可以根据 C/ObjC/Swift/Java/Kotlin 代码的头文件/接口文件,自动创建具有 Dart 接口的绑定,以及那些跨语言调用所需的自动绑定,也就是 FFIgen + JNIgen。

具体可见:https://github.com/flutter/samples/blob/main/experimental/pedometer/README.md

Web

本次还有一个惊喜就是 add-to-web 要来了, 一个叫做 element embedding 的支持即将到来。

element embedding 允许将 Flutter 添加到任何 Web <div> ,当以这种方式嵌入时,Flutter 就变成了一个 Web 组件与 Web DOM 完全集成,甚至可以使用 CSS 来设置父 Flutter 对象的样式。

例如将 Flutter 嵌入到基于 HTML 的网页中,然后使用 CSS 旋转效果,并且在旋转时 Flutter 内容仍可以交互。

同时 Dart 3 还对 Pub 上的 js 包进行了一些重大更改,从而实现 JavaScript 和 Dart 之间可以直接调用,如里使用 @JSExport 属性注释 Dart 代码中的任何函数,然后从 JS 代码中调用它。

除此之外 Flutter Web 也有一系列的优化计划,其中针对体积大小的优化是最重要的指标之一。

从官方提供的数据下看,未来 Flutter Web 的加载速度将会不断提升。

最后,现在 Flutter 支持在 Web 上的使用 Pixel shaders ,从而实现各种炫酷的视觉效果。

Flutter 新闻工具包

本次还有一个有意思但是对国内比较鸡肋的介绍: Flutter News Toolkit,一个用来加速新闻应用开发的免费 Flutter 应用模板。

这是 Flutter 团队和 GNI 合作的项目,官方宣称与 iOS 和 Android 上的传统双端开发相比,在该领域使用 FNT 可以节省高达 80% 的时间。

使用 Wonderous 适应大屏幕

Wonderous 早在去年 9 月份官方就推荐过一次 ,这一次主要是介绍了 Wonderous 的下一个版本,增加了对可折叠设备、平板电脑和平板电脑横向的支持

此次迭代同时测试了 Flutter 对不同设备格式的适配能力, 具体可见:https://github.com/gskinnerTeam/flutter-wonderous-app

Impeller

随着 3.7 的发布,Impeller 现在已经可以在 iOS 上进行预览

Impeller 针对 Flutter 进行了优化,提供了更大的灵活性和对图形管道的控制支持。

例如使用预编译着色器,减少运行时由着色器编译引起的丢帧,利用 Metal 和 Vulkan 中的原始支持等等。

除了让 UI 更流畅,Impeller 还可以在某些极端情况下显着提高性能,比如大会介绍的一个例子:

左边是默认渲染器,右边是 Impeller,可以看到滚动是左侧因为性能问题导致帧速率为 7-10 fps,而右侧 Impeller 可以稳定在 60 fps 。

3D

本次最后一个亮点就是 Flutter 未来将正式支持 3D 渲染,同时也代表着 Flutter 在游戏领域的更进一步。

其实从去年的 I/O 也好,还有本次 Flutter Forward 提前预热的相关内容,可以看到 Flutter 进军游戏领域一直没有停歇。

在本次演示中,除了支持 3D 渲染之外,还支持对 3D 文件资源进行 hotload 、添加动画支持。

可以看到,在演示中多个 3D 模型同时渲染动画的情况下,画面依然可以流畅运行,这绝对是本次 Flutter Forward 最让人期待的特性。

最后官方还演示了在低端 iPhone 上的 3d 游戏场景(有指纹解锁的老 iPhone ),可以看到画面还是相当流畅。

最后

看完之后你是不是蠢蠢欲动?但是这里面绝大多的都还只是开发中,可能会在未来可能还会有其他变动,而本次 Flutter Forward 展示它们的目的,相信也是官方想让大家更直观地了解 Flutter 未来的方向。

最后总结一下,本次 Flutter Forward 主要的核心内容有:

  • Impeller
  • 3D 支持
  • add-to-web 支持
  • Dart 3

让我们期待未来 Flutter 的更新能让这些 Feature 都能用上吧,在没有坑的情况下~

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

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

相关文章

layui框架学习(1:布局)

Layui是开源的 Web UI 组件库&#xff0c;虽然目前已不算是最主流的前端框架&#xff0c;但很多开源项目都采用Layui设计页面&#xff0c;为了学习相关的项目&#xff0c;同时也为了掌握Layui的基本用法&#xff0c;特此基于B站的Layui教学视频及Layui的官网教程&#xff0c;从…

【DockerCE】使用docker运行HertzBeat

HertzBeat是一款免Agent的监控平台&#xff0c;拥有强大自定义监控能力&#xff0c;可以对应用服务、数据库、中间件、操作系统、云原生等进行监控&#xff0c;配置告警阈值&#xff0c;以及告警通知(邮件微信钉钉飞书)。关于这个软件的介绍&#xff0c;我这里就不做过多的介绍…

在线工具轻松设计电商直通车主图,无需下载

电商直通车主图设计教程&#xff01;无门槛在线设计&#xff0c;零基础轻松入门的电商设计工具&#xff0c;轻松就能搞定的主图设计工具&#xff0c;下面跟着小编的设计教程&#xff0c;一起学习如何使用在线工具乔拓云轻松设计专属的商品直通车主图&#xff0c;在线模板轻松设…

QTableWidget表格使用及美化

QTableWidget使用 选中一行、选中单个目标、禁止编辑 ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//选中的时候选中一行ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);//只能选中单个目标ui->tableWidg…

C++程序设计——泛型编程、函数模板、类模板

一、泛型编程 假如需要实现一个通用的加法函数&#xff0c;即可以实现多种类型的数据相加。这里当然可以使用函数重载来实现&#xff0c;但是其中会存在一些不好的地方&#xff0c;比如&#xff1a; &#xff08;1&#xff09;重载的函数仅仅是类型不同&#xff0c;代码复用率…

尚硅谷Vue3 笔记总结及代码

✨作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 笔记结合了总结视频中总结的内容 尚硅谷张天禹老师课程 空降视频 Vue3官网 1、Vue3简介 1.1 性能的提升 打包大小减少41%初次渲…

从源码解析代理模式

大纲代理模式&#xff08;结构型设计模式&#xff09;通过代理类去访问实现类中的方法&#xff0c;使用场景比如&#xff1a;已有接口和实现类的情况下&#xff0c;想要在已实现的方法基础上扩展更多的功能的场景。代理模式里的主要类&#xff1a;接口实现类&#xff0c;需实现…

数据结构 第三章 栈和队列(栈)

天空之外&#xff1a;点击收听 1 基本知识点 1、栈顶是指允许进行插入和删除操作的一端&#xff0c;另外一端称为栈底 2、进栈是指在栈顶位置插入元素(也叫入栈或者压栈)&#xff0c;出栈是指删除栈顶元素(也叫弹栈或者退栈) 3、栈溢出是指&#xff1a; 当栈满的时候&#x…

led和白炽灯哪个对眼睛好?分享光线舒适的LED护眼灯

最近对于白炽灯与LED灯哪个更护眼的话题受到很多人关注&#xff0c;经过综合考虑&#xff0c;LED灯更适合家庭使用的。 LED灯是电致发光的半导体芯片&#xff0c;抗震性能好&#xff0c;内置三基色荧光粉&#xff0c;让光线更加柔和&#xff0c;做到使用寿命长达10万小时&#…

通信原理简明教程 | 基本概念

文章目录1 通信及通信系统1.1 通信系统的基本组成模型1.2 通信系统的分类1.3 模拟通信和数字通信系统2 调制和解调2.1 调制解调的基本概念2.2 调制解调的分类2.3 调制解调的作用3 通信系统的质量指标3.1 模拟通信系统的质量指标3.2 数字通信系统的质量指标4 总结1 通信及通信系…

算法导论(二):渐进符号、递归及解法

渐近符号 基本的渐近符号&#xff1a; O 表示上界&#xff0c;即小于等于 ≤ Ω 表示下界&#xff0c;即大于等于 ≥ Θ 表示渐近等于 &#xff08;上一集也有使用这个符号&#xff09; 还有几个严格符号&#xff1a; o 表示小于 < ω 表示大于 > 渐近符号O 主要详细讲…

Latex中给图表添加中英文标题及生成相关目录

通常我们都是用\caption{这里是标题}的方式给图表添加对应的标题&#xff0c;如果我们需要同时给出两个标题呢&#xff1f;&#xff08;例如某些毕业论文中要求同时给出中英文标题&#xff09;如果我们还要生成对应的图表目录呢&#xff1f;这些问题都可以利用bicaption这个包来…

【论文翻译】A simple yet effective baseline for 3d human pose estimation

【论文】https://arxiv.org/abs/1705.03098v2 【pytorch】weigq/3d_pose_baseline_pytorch: A simple baseline for 3d human pose estimation in PyTorch. (github.com) 【tensorflow】https://github.com/una-dinosauria/3d-pose-baseline 摘要 随着深度卷积网络的成功&am…

手把手教你如何在项目中使用阿里字体图标IconFont

阿里图标官网地址&#xff1a;IconFont-阿里巴巴矢量图标库 一、注册账号 要使用阿里图标&#xff0c;首先你要在它的官网注册一个账号&#xff0c;注册的方式有多种&#xff08;手机号&#xff0c;Github&#xff0c;微博&#xff0c;阿里域账号&#xff09;&#xff0c;根据…

【CSDN的2022与2023】普普通通的三年,从懵懂、焦虑到坚定、奋进,破除焦虑努力成为更好的自己

大家好&#xff0c;我是黄小黄&#xff01;一名普通的软件工程在读学生。最近终于闲下来了一丢丢&#xff01;借着休息之余&#xff0c;来写一篇年度总结散散心~与其说是年度总结&#xff0c;不如说是给大学生活与莽莽撞撞的自己一个交代叭&#xff01; 这些都是小标题~碎碎念1…

行为型模式-观察者模式

1.概述 定义&#xff1a;又被称为发布-订阅&#xff08;Publish/Subscribe&#xff09;模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时&#xff0c;会通知所有的观察者对象&#xff0c;使他们能…

深度卷积对抗神经网络 基础 第四部分 可控制的GANs(Controllable GANs)

不同的生成模型定义 深度卷积对抗神经网络包含两种不同的生成模型&#xff0c; 条件生成模型 和非条件生成模型。非条件生成模型就像是一个彩票机或者赌博机&#xff0c;你输入一个任意数字的硬币数量&#xff0c;而输出则是随机的彩球。这样的系统&#xff0c;我们不能控制输…

第九层(3):STL之vector类

文章目录前情回顾vrctor类vrctor类的功能vector与普通数组的区别vector的迭代器vector类内的构造函数vector类内的赋值操作vector类内对容器和大小操作vector类内的插入操作vector类内的删除操作vector类内的单个访问vector类内的交换函数vector类内的预留空间下一座石碑&#…

goto语句——“C”

各位CSDN的uu你们好啊&#xff0c;好久不见&#xff0c;甚是想念。今天小雅兰要带大家学习的内容是一个小知识点——goto语句&#xff0c;好啦&#xff0c;就让我们进入goto语句的世界吧 C语言中提供了可以随意滥用的goto语句和标记跳转的标号。 从理论上 goto语句是没有必要…

Python爬虫教你爬取视频内容

前面介绍了基本的数据爬取&#xff0c;图片爬取的相关案例前面文章也有涉及&#xff0c;关于有些案例网站不能登录的问题&#xff0c;可以再找些别的网站&#xff0c;因为道理既然明白了&#xff0c;其实什么网站都一样&#xff0c;它有反爬机制&#xff0c;自然有应对它的办法…