近日,在上海举办的“Google Developer Days“上,谷歌宣布 Flutter 1.9 版本、Dart 2.5 版本正式发布。另外还宣布了 Flutter Web 支持项目的一项重大里程碑:Flutter 的 Web 支持集成到了 Flutter 的主库中,让开发人员可以使用同一套代码库为移动、桌面和 Web 平台开发应用。
这个星期 Flutter 迎来了大新闻!在谷歌为中国开发者举办的最高级别会议“Google Developer Days”的第一天,公布了 Flutter 的最新稳定版本:Flutter 1.9。这是有史以来规模最大的更新,包含来自 100 多位贡献者的超过 1,500 个 PR。新版引入的功能和更新覆盖众多领域,例如支持 macOS Catalina 和 iOS 13 操作系统、改进的工具支持,以及新的 Dart 语言功能和新的 Material 小部件等。
在发布会上还宣布了 Flutter Web 支持项目的一项重大里程碑:Flutter‘s Web Support 集成到了 Flutter 主库中,让开发人员可以使用同一套代码库为移动、桌面和 Web 平台开发应用。
注:本次大会展示的案例来自腾讯公司,他们正在越来越多的移动应用中使用 Flutter 做开发。下面来具体了解一下 Flutter 1.9 的新特性。
支持 macOS Catalina 和 iOS 13 操作系统
苹果即将发布 macOS 的最新版本 Catalina,谷歌也已经让 Flutter 为用户升级到新版系统做好了准备。他们已经更新了端到端的工具链,确保它在 Catalina 和 Xcode 11 上运行良好。为此还添加了对新版 Xcode 构建系统的支持、在整个工具链中实现 64 位支持,并简化了平台依赖项。
苹果的 iOS 13 也即将推出正式版,谷歌也做了充分的准备工作,确保你的 Flutter 应用程序在这一最新的 iPhone 版本上表现出色。Flutter 1.9 包含了一项iOS 13可拖动工具栏的实现,其同时支持长按和右拖,并支持 vibration feedback。针对 iOS 黑暗模式的相关工作也在进行中,我们已经合并了许多拉取请求。
最后,现在用户可以在最新的开发版本中启用对Bitcode的实验性支持。Bitcode 是苹果开发的平台独立的编译程序中间层。以 Bitcode 的形式向苹果提交你的应用程序后,苹果无需你再次提交就能随时对你的二进制文件进行性能优化;这也让 Flutter 有潜力支持新的平台,例如需要使用 Bitcode 提交应用程序的 watchOS 和 tvOS。
新的 Material 小部件
旧版的 Material 组件和功能也在 Flutter 1.9 中得到了升级。Material 是世界领先的开源设计系统之一,提供全面、灵活的构建块,可在众多平台上实现交互式用户体验。
在新版本中提供了几个新的小部件,包括 ToggleButtons(图一)和 ColorFiltered(图二)。
图一
图二
ToggleButtons 小部件将一行 ToggleButton 小部件打包在一起,通常由一组 Icon 和 Text 小部件组成,以形成一组具有完全可自定义外观和行为的按钮。你想要单选还是多选?你需要至少选中一项抑或是全部不可选?你想要方形还是圆形边缘,宽边框还是窄边框,图标还是文字?诸如此类都不成问题。上图中可以看到其中一些选项,还可以在ToggleButtons示例中观看具体的实现方法。
如下图所示,ColorFiltered 小部件允许你重新为一个小部件子树着色,就像使用几种不同算法重新着色一张图像一样(其中一些算法在上面的示例截图中可以看到)。这个功能有很多用途,例如为色盲用户处理可访问性问题等。要了解这一操作的细节,请查看ColorFiltered示例。
全球语言支持
我们还增加了对南非荷兰语、祖鲁语等 24 种新语言的支持。
Dart 2.5 发布
端到端的开发人员体验不仅取决于 Flutter 的功能,还取决于它使用的底层语言。作为 Flutter 1.9 新特性的一部分,谷歌还发布了Dart 2.5。Dart 2.5 包含一个预发布的外部函数接口(FFI)支持,提供原生扩展,使 Dart 可以直接调用用 C 编写的代码。它还为 IDE 引入了机器学习驱动的代码自动完成功能。想要了解更多内容可参见Dart 2.5的版本发布说明。
工具链改进
在这个版本中,iOS 新项目默认使用 Swift 取代了 Objective-C,而 Android 新项目默认使用 Kotlin 取代了 Java。由于许多软件包都是使用 Swift 编写的,因此将 Swift 作为默认语言后,使用默认选项创建的应用程序就不用手动添加这些软件包了。Swift 5 是 ABI 稳定版,并且由于苹果在最近的版本中已经完成了应用瘦身工作,Swift 动态库不再需要包含在 iOS 12.2 或更高版本的分发包中,相比旧版减小了 Swift 应用程序的体积。
由于 Kotlin 现在是 Android Studio 中新项目的默认语言,因此 Flutter 的默认 Android 开发语言切换也就顺理成章了。现在 flutter CLI 工具和IntelliJ/Android Studio以及VS Code的 Flutter 插件默认都使用这些选项,但如果你愿意,你可以随时切换回 Objective-C 或 Java。
此外,我们一直在设法改善 Flutter 的错误消息可读性,使其更简洁、更易操作。
这个项目是 Flutter 用户体验团队负责的,详情可以查阅这篇博客文章,其中介绍了有关结构化错误显示的工作。我们刚刚开始应用这些新模式,未来的版本中你可以期待有更多错误消息利用这些成果。
Web 平台的 Flutter
最后,谷歌宣布 Flutter 的 Web 支持已合并到主存储库中,旧的flutter_web存储库已弃用!如果你从主通道或开发通道获得了最新的 Flutter 版本,则可以在最新测试版本中运行 flutter run -d chrome 选择 Web 目标。
当你创建项目时,Flutter 现在通过最小化的 web/index.html 文件创建一个 Web 运行器,该文件负责引导针对 Web 编译的 Flutter 代码。有了这个文件后,你就可以使用 Flutter CLI 工具或 IDE 插件在 Web 上编辑和运行 Flutter 应用程序。
以上是 VS Code 中的屏幕截图,其为 Flutter 启用了 Web 支持。请注意图中的 web/index.html 文件;还有下拉列表,你可以在列表上选择 Chrome 作为目标开发设备。Flutter 对 Web 输出的支持仍处于早期阶段,但这一版本是向 Flutter 的 Web 开发生产支持迈出的重要一步。
在 7 月底谷歌宣布了一项早期使用者计划,挑选出一组未来六到十二个月内在 Web 上部署的优秀 Flutter 应用程序作为示范。这一计划收到了超过 1,000 份提交。遗憾的是他们没有能力支持所有申请人,但现在 Web 支持已合并到 Flutter 框架中,很高兴看到所有人都可以体验这一能力了。
一些社区实验已经展示了一些 Flutter 的 Web 输出案例:
图三
图四
Flutter Widget Livebook(图三)使用 Flutter for web 构建,用来在浏览器中显示实时运行的 Flutter 小部件。Panache(图四)是一个为 Flutter 创建主题的工具,你可以下载做好的主题并直接插入到你的代码中。
欢迎大家尝试 Flutter for web 的测试版本,有任何反馈请向我们提交。
社区
很高兴看到 Flutter 正在不断发展壮大、逐渐流行。在谷歌,数以百计的开发人员正在使用 Flutter 开发超过 20 个项目,其中一些已经发布,还有许多仍在开发中。如果你的手机上有谷歌智能助理,或者身边有一个谷歌 Nest Hub 设备,那么可以试一下这个好玩的功能:对它说“OK Google. Talk to Flutter Widget Quiz“来做测验吧。这个社区制作的测验可以测试你对 Flutter 的了解有多深,很有趣。
结语
有关升级到 Flutter 1.9 的更多详细信息,包括如何修复迁移代码时可能遇到的重大更改等相关内容,请查看 Flutter 1.9 的详细发行说明。
这个版本有很多新东西值得你一试:有新的 dart:ffi 或基于机器学习的[代码自动补全功能;有实验版的Flutter for web;支持 Catalina 和 iOS 13;还有新的ToggleButtons和ColorFilter小部件,甚至还能测试你对Flutter小部件的了解等等。
原文链接:https://developers.googleblog.com/2019/09/flutter-news-from-gdd-china-flutter1.9.html
评论