前两天,Google 公布了 Flutter 1.20 的正式版,这是继 Flutter 1.17 版本之后又一重要的版本。始终以来,Google 都在致力于 Flutter 的 疾速,好看,高效和凋谢地
四个方面来一直的开发产品,围绕这四个方面,此次版本带来了性能晋升、挪动端主动补全、新的性能小部件等泛滥个性。
为了使开发者可能构建更加精美的 Flutter 应用程序,1.20 版本提供了多项 UI 加强性能,包含期待已久的:
- 主动补全反对;
- 对 Widget 进行分层以反对平移和缩放的新形式;
- 鼠标光标反对;
- 对旧版本的 Material Widget(例如工夫和日期选择器),同时也为台式机与挪动端 Flutter 利用中的 About 框带来全新的响应式许可页面的更新。
同时,为了保障可能持续晋升开发者的工作效率,咱们还面向 Visual Studio Code 对 Flutter 进行扩大更新,旨在将 Dart DevTools 间接纳入 IDE 之内、在挪动文件时自动更新导入语句、并提供一组新的元数据供您进一步构建本人的工具。
Flutter 凭借着明确的开放性与沉闷的社区奉献放弃着旺盛的生机,此次公布的新版本中蕴含来自寰球 359 位贡献者(其中 270 位贡献者来自 Flutter 社区)提交的 3029 条合并 PR,外加 5485 项已敞开问题。这也是 Flutter 我的项目倒退至今,涵盖贡献者最多的一次更新。
社区贡献者 CareF 提交 28 项 PR,AyushBherwani1998 提交了 26 项 PR、其中包含 10 项用于 Google Summer of Code 我的项目的 Flutter 样本,a14n 提交了 13 项 PR、其中大部分与 Flutter 的登陆服务平安相干,在这里咱们向各位贡献者致以诚挚的谢意!这是 Flutter release 版本中蕴含的最多社区奉献,特地是向这些社区贡献者表示感谢!
Flutter 的每一个新版本都进一步晋升了我的项目的使用量与倒退态势。在往年 4 月的统计数据中,Google Play 商店中的 Flutter 应用程序数量曾经多达 5 万款,月度新公布利用峰值数量为 1 万款。而在短短的 3 个月之后,现在 Google Play 中的 Flutter 利用曾经超过 9 万款。目前,印度曾经成为挪动倒退速度最快的市场,同时也是 Flutter 开发人员数量最多的区域,在过来六个月中增长了一倍——这也是谷歌在印度加大我的项目投资密切相关。最初,Flutter 不可能脱离 Dart 语言独立存在,咱们也很快乐看到 Dart 语言同样放弃着旺盛的生命力,在 IEEE 的排名报告中进一步回升 4 位、在最新一期榜单的前 50 大编程语言中排名第 12。
上面,咱们就从 Flutter 与 Dart 的性能晋升、主动补全、全新小部件交互、新组件和新插件等几个方面介绍 Flutter 1.20 版本的新个性。
Flutter 与 Dart 的性能晋升
在 Flutter 团队中,咱们始终在致力削减应用程序体积、升高提早程度。与上个版本相比,此次公布的新版本修复了 icon font tree shaking 优化时的工具性能问题,并在构建非 Web 应用程序时将字体摇树优化设置为默认选项。icon font tree shaking 优化将删除您未在应用程序中理论应用的图标,从而放大利用体积。以 Flutter Gallery 利用为例,咱们发现新版本可能令其体积缩小 100 kb。当初,您只需应用最新发行版即可在挪动利用中默认应用这些改良。目前的优化仅反对 TrueType 字体,咱们将在后续版本中勾销这一限度。
同时,咱们在新版本中做出的另一项性能改良,在于通过预热阶段缩小动画初始显示时呈现的锯齿景象。您能够在以下动画中观看改良成果(已加快至 0.5 倍速)。
如果 Flutter 应用程序在首次运行期间呈现了动画不稳固状况,则 Skia Shading Language 着色器将在利用构建过程中提供预编译性能,借此将编译速度进步 2 倍以上。如果您心愿应用此项高级性能,请参阅 flutter.dev 网站上的 SkSL 预热页面。
最初,在面向台式机进行形制优化时,咱们也进一步欠缺了对鼠标设施的反对成果。在新版本中,咱们重构了鼠标点击测试零碎,心愿借此实现在此前版本中因性能问题而未能应用的多项架构劣势。通过重构,咱们得以在基于 Web 的微基准测试中将性能晋升达 15 倍!这意味着您将取得更好、更对立且更精确的命中测试后果,却无需在性能层面做出斗争:两全其美!
通过这项更好、更快、更弱小的鼠标命中测试,咱们也减少了对鼠标光标的反对——这也是台式机上最受欢迎的性能之一。在默认状况下,曾经有多款罕用小部件上可能显示您所冀望的光标成果;当然,大家也能够从受反对的光标列表中指定其余光标模式。
此次 Flutter 的新版本基于 Dart 2.9 版本进行构建。Dart 2.0 提供新的、基于状态的两段式 UTF-8 解码器。该解码器领有在 Dart VM 中通过优化的解码原语,且局部应用到 SIMD 指令。UTF-8 是迄今为止互联网上应用范畴最广的字符编码方法。在接管到体积较大的网络响应时,疾速的解码能力无疑间接决定着利用性能体现。在 UTF-8 解码基准测试中,咱们发现即便是在低端 ARM 设施上,英语文本的解码速度也晋升至近 200%,而中文文本更是晋升至 400%。
挪动文本字段主动补全
一段时间以来,Flutter 程序当中最受欢迎的头等性能,就是能够反对 Android 与 iOS 提供的根底文本主动补全性能。而在 PR 52126 的反对下,当初用户不再须要从新输出操作系统曾经收集到的各项已输出数据。
另外,咱们很快乐的通知大家,咱们也曾经开始为 Web 增加此性能。
常见交互模式的全新小部件
Flutter 1.20 版本引入了一个新的小部件 InteractiveViewer。该 InteractiveViewer 设计用于建设一般类型的交互性到应用程序,如: 平移,缩放和拖动“N”降落甚至大小调整,其中相似这种简略的棋盘。
要理解如何将 InteractiveViewer 集成至您本人的应用程序当中,请参阅相干 API 阐明文档。另外,如果你想理解 InteractiveViewer 设计和开发方法,则能够在 YouTube 上看到 Chicago Flutter on YouTube. 的演讲。
如果大家心愿向启用 InteractiveViewer 的 Flutter 利用中增加新的交互性能,咱们要分享另一个好消息——新版本中增加了更多拖拽操作相干性能。具体来讲,如果您心愿确切理解拖放操作在指标小部件上的具体位置(实用于所有可手提对象本体),当初您能够间接应用 DragTarget onAcceptDetails 办法获取相干信息。
请查看此示例以理解更多详细信息,咱们还将在将来的发行版中间接通过拖动过程提供相干信息,以便 DragTarget 可能在拖动操作期间轻松提供可视化更新。
Material Slider、RangeSlider、TimePicker 以及 DatePicker 更新
除了新的小部件之外,此次新版本还对一系列原有小部件进行了更新,借此匹配新的 Material 开发指南。其中包含 Slider 与 RangeSlider。对于更多详细信息,请参阅 Slider 小部件迎来哪些更新?
同时,DatePicker 已更新,包含新的紧凑型设计以及对日期范畴的反对。
最初,TimePicker 也带来了全新的格调。
响应式许可页面
新版本中的另一项更新,是在 AboutDialog 当中提供新的响应式许可页面。
来自社区贡献者 TonicArtos 的 PR 57588 不仅进行了更新,以合乎 Material 准则,使其看起来十分好看,而且更易于浏览,并设计为可在平板电脑和台式机上以及在手机上失常应用。谢谢 TonicArtos!因为每个 Flutter 应用程序都应显示其应用的软件包的许可证,因而使每个 Flutter 应用程序都变得更好了。
公布插件须要新的 pubspec.yaml 格局
当然,Flutter 不仅是控件,它也是工具,此版本附带太多更新,然而,这里有一些亮点。首先,是一项公共服务布告:如果您是 Flutter 插件的作者,那么 pubspec.yaml 公布插件将不再反对旧格局。如果尝试执行 pub publish 时会收到以下谬误音讯:
旧格局不容许咱们指定插件所反对的平台,咱们自 Flutter 1.12 版本开始就在逐渐淘汰旧有格局。当初,在新版本上公布或者更新插件时,须要应用新的 pubspec.yaml 格局。
不过,请各位插件用户不用放心,新版本依然可能失常应用旧有 pubspec 格局。在可预感的将来,pub.dev 上曾经颁布的全副现有 pubspec.yaml 格局插件也将可能与 Flutter 应用程序失常配合应用。
在 Visual Studio Code 中嵌入 Dart DevTools
新版本中最重要的一项工具更新,就是对 Visual Studio Code 加以扩大。其中还提供一项新性能预览,帮忙大家将 Dart DevTools 屏幕间接引入编码工作区。
应用新的 dart.previewEmbeddedDevTools 设置启用此性能,下面的屏幕截图显示了间接嵌入到 Visual Studio Code 中的 Flutter Widget Inspector,启用了此新设置,你能够应用状态栏上 的 Dart DevTools 菜单抉择嵌入的珍藏页面。
此菜单供您抉择须要显示的页面。
目前,此项性能尚处于预览阶段,大家能够在此处向咱们提出倡议与反馈。
网络跟踪更新
DevTools 的最新版本中提供 Network 页面的更新版本,可启用 Web 套接字剖析性能(记得上一次更新还不反对,Dart DevTools)。
Network 页面当初会将计时信息、状态信息以及内容类型等增加至应用程序中的网络呼叫内。咱们还对详细信息 UI 做出改良,旨在提供 websocket 或 http 申请中的数据概述。咱们也制订了更多后续更新打算,例如在此页面中纳入 HTTP 申请 / 响应注释以及监控 gRPC 流量等。
在重新命名文件时更新导入的语句
Visual Studio Code 的另一项新性能,是在重新命名或挪动文件时自动更新导入语句。
此性能目前仅实用于单个文件,尚不反对多个文件或者文件夹,但相应性能将来将陆续推出。
为各工具构建者提供工具元数据
值得一提的另一项重要更新,次要面向构建 Flutter 工具的开发人员。咱们在 GitHub 上创立了一个新我的项目,用于捕获并公布对于 Flutter 框架本体的元数据。其中提供以下机器可读的数据文件:
- 涵盖所有以后 Flutter 小部件的目录(共 395 个!)。
- 面向 Material 与 Cupertino 色调集的 Flutter 框架色调名称与色调值间的映射。
- 用于 Material 与 Cupertino 图标的图标元数据,其中包含图标名称与预览图标。
此元数据与咱们在 Android Studio/IntelliJ 及 VS Code 扩大中应用的元数据雷同,可能会在大家自主构建工具时发挥作用。此元数据可令 IntelliJ IDE 家族间接显示 Flutter 代码中应用的色调。
与此相关的是 IntelliJ 和 Android Studio 中的一项新性能,该性能显示 Color.fromARGB()和 Color.fromRGBO()的色块。
用于平台互操作的 Typesafe 平台通道
为了响应用户考察当中插件作者们提出的广泛需要,咱们最近始终在摸索如何进一步晋升 Flutter 与主机平台之间的通信安全,同时升高插件与 Add-to-App 的应用难度。为此,咱们创立了 Pigeon,这是一款命令行工具,应用 Dart 语法在平台通道上方生成类型平安音讯代码,且无需增加任何运行时依赖项。
利用 Pigeon,您能够间接调用 Dart 办法,借此调用 Jaa/Objective-C/Kotlin/Swift 的类办法并传递非基元数据对象(反之亦然),且无需在平台通道上手动匹配办法字符串及或执行参数序列化。
除此之外,Flutter 1.20 版本还对工具进行了更新与调整,受篇幅所限,咱们无奈一一列举。
VS Code 扩大 v3.13
VS Code 扩大 v3.12
VS Code 扩大 v3.11
Flutter IntelliJ 插件 M46 公布
Flutter IntelliJ 插件 M47 公布
Flutter IntelliJ 插件 M48 公布
Flutter 内置的面向 Flutter 开发人员的新工具
总结
心愿此次公布能让大家称心。从各个角度来看,1.20 版本都是 Flutter 迄今为止体量最大的发行版。随着性能的晋升、小部件的公布与更新、外加工具的改良,咱们始终在致力打造出更完满的 Flutter。另外,咱们要感激各位社区成员,贡献者群体的一直增长壮大,最终令 Flutter 的每一个最新版本都在成就以往难以想象的高度。接下来,咱们还将在 null safety 反对,Ads、Maps 与 WebView 插件新版本,以及更全面的工具反对等方面做出致力。
原文参考:https://medium.com/flutter/announcing-flutter-1-20-2aaf68c89c75