祝福 Eric 的下一段旅程,Flutter 3.3 现已发布
Flutter 团队及社区成员们在美丽的城市挪威奥斯陆向您发来问候,我们正在此参加社区举办的 Flutter Vikings 活动,这是一个为期两天的开发技术交流盛会,虽然线下门票已经售罄,但您还可以通过在线方式查看本次会议。本周,我们也有很多更新要分享给各位开发者们。
Flutter 的使用量和生态系统都在持续增长,每天有超过 1,000 款使用 Flutter 的、新的移动应用发布到 App Store 和 Google Play 商店,在 Web 端和桌面端的使用也在持续增长。Flutter 生态中目前也有超过 25,000 个以上的 package,这也进一步证明了 Flutter 的成熟和广泛应用。

今天,我们正式发布 Flutter 3.3。这个版本专注于完善和性能改进,以加强 Flutter 3 发布以来的新特性。Flutter 3.3 加入了一些新的组件并修复了一些错误以加强对 Material 3 规范的支持,也加入了对 iPad 上使用随手写输入文本的支持、可选择的文本分组和触控板支持等对平板电脑和桌面开发者有帮助的新支持。这个版本还包括了 Dart 2.18 的发布,它为使用 Swift 和 Objective-C 构建的库和代码加入了 FFI 的支持。使用这个 Dart 版本构建的应用,将会在桌面端、Web 端和移动端表现出更好的性能。因此我们强力建议您即刻运行命令 flutter upgrade 来升级到最新版。
发布 Wonderous 应用
我们与 gskinner 的设计团队通力合作,发布了一个名为 Wonderous 的应用,旨在向大家展示 Flutter 的强大功能——帮助您构建出高质量、精美的用户体验,而它本身就是一个非常精美的应用——从印度阿格拉市令人惊叹的泰姬陵到墨西哥尤卡坦半岛上的玛雅遗址,Wonderous 将世界上一些非常了不起的地方带到您的手机上,使用视频和图像来探索这些艺术、历史和文化的交集。

我们希望您与家人和朋友分享 Wonderous,更重要的是,它还作为一个开源项目供开发者们探索。作为一个真实上线运营的应用,它提供了一个完整且全面的示例,展示了我们希望为中高级开发者带去灵感和创想的最佳实践。未来的几周时间里,gskinner 团队将会分享关于这个应用的更多技术细节文章,包括对无障碍的支持、动画效果以及性能方面的技巧等内容。
引入新的图形引擎: Impeller
除了上面提到的 3.3 版本的改进内容之外,Flutter 团队还在努力开发 下一代的渲染层引擎: Impeller。
Impeller 是对 Flutter Engine 核心部分的一次重大重写,使用一个定制的运行时环境来取代 Skia 代码,并充分利用现代的硬件加速的图形 API,如 iOS 上的 Metal 和 Android 上的 Vulkan。Impeller 提供了丝滑的动画效果,并很大程度提升了各种多平台 UI 工具包的 "门槛"。这个性能上的差异是肉眼可见的,使用 Impeller 的应用可以保持 60Hz 或者更快的刷新率的同时,能够比以前更进一步地突破界限。最值得注意的是,Impeller 完全消除了对运行时着色器编译的需要,而运行时着色器编译是丢帧卡顿的一个常见来源。
虽然 Impeller 现有的功能还不够完善,并且我们也还在优化它的性能,但我们现在正在一个 Google 级的产品应用上做内部测试。如果您在 App Store 下载刚刚提到的 Wonderous for iPhone,您就能提前感受 Impeller 在生产环境中的应用上运行的效果。
我们正在 iOS 上为 Impeller 做一个早期采纳者的预览版本 ,除了在命令中加入一个启用 Impeller 参数 (--enable-impeller) 之外,您无需对现有代码做任何改动就能启用它。更多的关于 Impeller 架构以及如何启用的文档您都可以在我们的 wiki 页面 中找到。Impeller 正处于积极开发的状态,如果您想参与作为早期采纳者来使用的话,您需要切换到 Flutter 的 master 发布渠道来确保使用了最新的代码。
我们期待着更多使用 Impeller 的应用出现,同时也非常欢迎使用了 Impeller 的开发者向我们提出当下版本的、可复现的、对应用当前版本性能影响或者保真度失真的 报告。
祝福 Eric 的下一段旅程
最后,我们想要以对 Flutter 的联合创始人之一、Flutter 工程主管 Eric Seidel 的祝福作为结尾,他将于本月离开谷歌并开启新的冒险旅程。2015 年的 Dart 开发者峰会上,Eric 首次向全世界介绍 Flutter,当时 Flutter 还木有名字和吉祥物,在 Flutter 的过去和现在的大部分时间里,Eric 一直在带领和管理 Flutter 的工程团队,简单说,没有 Eric 就没有 Flutter。
Eric 是一个天生的创业者,他的 "superpower" ("超能力",superpower 也是 Eric 最喜欢用的词语之一) 便是创造和发起新的构想和理念,因此,当 Eric 决定开启下一段冒险旅程的时候,我们衷心为他祝福。
以 Flutter 1.0 发布 Eric 在当时 Flutter Live 大会上对 Flutter 的愿景作为结尾: Flutter 是一个长期主义的赌注,希望从根本上做出改善并构建一个美好的用户体验。这仍是我们的愿景,因为这个结果还没有最终实现。全球有数百万开发者信赖 Flutter,Flutter 生态有成千上万的贡献者,Google 的 Flutter 团队也正在蓬勃发展,我们希望您可以继续加入我们的 Flutter 之旅,谢谢!
祝福 Eric 的下一段旅程,Flutter 3.3 现已发布的更多相关文章
- Flutter 2.2 现已发布!
在本次 Google I/O 2021 大会 上,我们正式发布了 Flutter 2.2.Flutter 2.2 是我们最新版的开源工具包,可让开发者立足单个平台构建适合任何设备的精美应用.Flutt ...
- XD to Flutter 2.0 现已发布!
Flutter 是 Google 的开源 UI 工具包.利用它,只需一套代码库,就能开发出适合移动设备.桌面设备.嵌入式设备以及 web 等多个平台的精美应用.过去几年,对于想要打造多平台应用的开发者 ...
- Linux下的段错误(Segmentation fault)
Linux开发中常见段错误问题原因分析 1 使用非法的内存地址(指针),包括使用未经初始化及已经释放的指针.不存在的地址.受系统保护的地址,只读的地址等,这一类也是最常见和最好解决的段错误问题,使用G ...
- Linux下的段错误(Segmentation fault)
Linux下的段错误(Segmentation fault) 段错误是指:访问了系统分配给程序的内存空间之外起的内存空间,比如: 访问不存在的地址 访问受系统保护的地址 访问了只读内存地址 内存访问越 ...
- Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布
环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...
- linux下寻找段错误的方法
为了能够快速找到发生段错误的地方,记录以下两种方法. objdump和backtrace的配合使用 :https://www.cnblogs.com/jiangyibo/p/9507555.html ...
- Linux下调试段错误 (gdb,core,ulimit)
Linux环境下经常遇到某个进程挂掉而找不到原因,我们可以通过生成core file文件加上gdb来定位. (1)首先 在makefile中要增加编译调试选项 -g,才可以利用下面的gdb来调试 gc ...
- 你好 ChatGPT, 帮我看下这段代码有什么问题?
点赞再看,动力无限. 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多系列文章. 今天一个很简单的功能,触发了一个 BUG,处 ...
- (转)Linux下数据段的区别(数据段、代码段、堆栈段、BSS段)
进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的, ...
- 运维笔记--Linux查找指定目录下某段时间的文件
查找指定目录下,60天之前的文件:find /mnt/xml_data -mtime +60 -name "*.xml" 找到并统计数量:find /mnt/xml_data -m ...
随机推荐
- LOTO示波器功率分析功能
LOTO示波器软件在非标功能中增加了功率分析功能,对当前屏幕的电压波形和电流波形进行了瞬时功率,视在功率以及有功功率/平均功率的分析计算. 有功功率是指电器所消耗的电能,用于产生热能.机械能或光能等, ...
- 【微信小程序】 全局数据共享
1.什么是全局数据共享 全局数据共享(又叫做:状态管理)是为了解决组件之间数据共享的问题. 开发中常用的全局数据共享方案有: Vuex.Redux. MobX等. 2.小程序中的全局数据共享方案 在小 ...
- 强化学习中的“sample efficiency”应该如何翻译 —— “样本效率”还是“采样效率”
问题: 强化学习中的"sample efficiency"应该如何翻译 -- "样本效率"还是"采样效率" 答案: 具体看上下文内容.如果是 ...
- tensorflow1.x——如何在C++多线程中调用同一个session会话
相关内容: tensorflow1.x--如何在python多线程中调用同一个session会话 ================================================= 从 ...
- java多线程之-线程池状态
1.背景 这一节我们来学习一下线程池状态..... 2.线程池状态 状态名称 高3位 是否接受新任务 是否处理队列中的任务 说明 RUNNING 111 是 是 线程池正常运行状态 SHUTDOWN ...
- Java学习笔记1--JDK,JRE和JVM
1.Java开发环境 Java开发环境是指Java程序员开发.编写.测试和调试Java程序所使用的所有工具和技术.Java开发环境通常由以下几个部分组成: JDK(Java Development K ...
- C语言实现url解析小实例
一.前言 前面一口君写了一篇关于url的文章: <一文带你理解URI 和 URL 有什么区别?> 本篇在此基础上,编写一个简单的用于解析url的小例子, 最终目标是解析出URL中所有的数据 ...
- 可以调用Null的实例方法吗?
前几天有个网友问我一个问题:调用实例方法的时候为什么目标对象不能为Null.看似一个简单的问题,还真不是一句话就能说清楚的.而且这个结论也不对,当我们调用定义在某个类型的实例时,目标对象其实可以为Nu ...
- OpenPCDet为KITTI数据集生成数据信息出现错误TypeError: load() missing 1 required positional argument: ‘Loader‘的解决方案
OpenPCDet为KITTI数据集生成数据信息出现错误 TypeError: load() missing 1 required positional argument: 'Loader' 通过查阅 ...
- Tree组件的快速定位更新节点的状态,以及修改节点的数据属性等操作
当我们点击树节点的时候我们常常只能获得树的id,那么我么如何获快速定位到树节点的内容呢,除此之外,当树已经存在时,但是缺少我们想要的内容时,我们想在树节点上添加我们需要的额外的内容时该怎么办,那么就是 ...