Flutter 1.9 正式发布!| 全平台创新开发体验
本周对 Flutter 意义非凡。Google 面向中国开发者举办的重量级年度盛会——中国 Google 开发者大会于今日正式拉开帷幕。在主题演讲环节,Flutter 团队宣布推出最新稳定版: Flutter 1.9。这是 Flutter 迄今为止最大的一次版本更新,100 余位贡献者提交共计超过 1,500 份 pull request。Flutter 1.9 引入的新特性与更新涵盖范围广泛,包括 macOS Catalina 和 iOS 13 支持、工具支持优化、多项 Dart 语言新特性以及全新的 Material widget。
Flutter 官方网站
https://flutter.dev
团队还在会上宣布了另一个具有里程碑意义的重磅消息: Flutter web 支持现已成功合并到 Flutter 的主 repo,自此以后,开发者只需使用同一套基准代码,便可为移动平台、桌面端和网页端开发应用。此外,团队也分享了来自全球互联网公司腾讯的成功案例,让现场观众体验了一把 Flutter 的蓬勃活力,亲眼见证越来越多的应用正在通过 Flutter 缔造精彩。
接下来,让我们一起回顾一下 Flutter 要闻。首先,给大家介绍一下 Flutter 1.9 带来了哪些重要的更新内容。
macOS Catalina 和 iOS 13 支持
为新的 Xcode 构建系统提供支持 全工具链启用 64 位支持 简化平台依赖项
iOS 13 的拖拽式工具栏 https://github.com/flutter/flutter/pull/35829 触感反馈 https://github.com/flutter/flutter/pull/37724 开发者已经提交了 pull request https://github.com/flutter/flutter/issues/35541
最后,最新版本的开发构建允许您启用 Bitcode 实验性支持。Bitcode 是苹果新添加的一个编译特性,开启 Bitcode 功能后,开发者只需在编译环节上传与平台无关的 Intermediate Representation (中间文件) 即可。以 Bitcode 的形式上传应用后,苹果可以在后期直接对二进制文件进行优化,免除了开发者二次上传的麻烦,与此同时,这也为 Flutter 开启了更多的使用场景,比如说为 watchOS 和 tvOS 等要求上传 Bitcode 文件的平台提供支持。
启用 bitcode 实验性支持 https://github.com/flutter/flutter/wiki/Creating-an-iOS-Bitcode-enabled-app-(experimental)
全新的 Material widget
Flutter 1.9 也对 Material 组件和特性进行了升级。作为一款全球顶尖的开源设计系统,Material 提供了丰富多彩、灵活易操作的视觉元素,助力开发者在多个平台实现高交互性的用户体验。
在 Flutter 1.9 中,我们新添加了若干 widget, 其中包括 ToggleButtons 和 ColorFiltered。
ToggleButtons widget 可将同一行的多个 ToggleButton widget 组合到一起,其中每个 widget 各自又由一组图标和文本 widget 构成。通过这种组合,开发者将得到一组外观与行为完全可自定义的按钮。它能为您的应用按钮实现更加多元化的设计——不论是单选还是多选,选择至少一个或是零个,尖角还是圆角、粗边或细边,图标或文本——ToggleButtons widget 全都可以满足。请查看 ToggleButtons 示例,了解以上需求的具体实现。
ToggleButtons 示例 https://github.com/csells/flutter_toggle_buttons
正如上文右图所示,ColorFiltered widget 允许您更改子 widget 树的颜色,这与利用算法 (部分算法见上图样例) 给图片重新上色差不多。该 widget 能够帮您处理许多用例,例如: 向用户提供更好的色彩无障碍服务等等。请查看 ColorFiltered 示例,了解该 widget 的工作细节。
ColorFiltered 示例
https://github.com/csells/flutter_color_filter
全球语言支持
此外,我们还新增了南非语 (Afrikaans)、祖鲁语 (Zulu) 等 24 种语言的支持。
Dart 2.5 发布
如要保障流畅的端到端 Flutter 开发体验,仅仅凭借强劲的特性是不够的,底层语言也至关重要。在 Flutter 1.9 发布之际,我们也推出了最新版本的 Dart 语言——Dart 2.5,内含预发布版本的 Dart: FFI (外部函数接口),它可用于实现 Dart 语言与 C 语言之间的互操作 (interop),以及由机器学习驱动的 IDE/编辑器代码补全功能。更多技术细节,请阅读《Dart 2.5 发布说明》(请关注微信公众号后续推文)。
工具链优化
Flutter package https://pub.dev 近期几个系统版本中也为应用瘦身做了许多工作 https://developer.apple.com/documentation/xcode_release_notes/xcode_10_2_release_notes/swift_5_release_notes_for_xcode_10_2#3138038
IntelliJ/Android Studio https://plugins.jetbrains.com/plugin/9212-flutter VS Code https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
△ 对错误提示信息做出改进
在 web 平台运行 Flutter
flutter_web https://github.com/flutter/flutter_web flutter 的主 repo https://github.com/flutter/flutter
在您创建项目时,Flutter 会通过一个最小的 web/index.html 文件来生成一个 web 运行引擎 (web runner),其中 web/index.html 文件主要用于自举 (bootstrap) 基于 web 编译的 Flutter 代码,有了这文件后,您可使用 Flutter CLI 工具或 IDE 中的 Flutter 插件来编辑或运行针对 web 平台开发的 Flutter 应用。
上图为启用了 Flutter web 支持的 VS Code 界面截屏。请注意 web/index.html 文件和顶部的下拉列表允许您选择 Chrome 作为目标设备。尽管 Flutter 的 web 支持还不成熟,但是我们在 Flutter 1.9 中朝着正确的方向迈进了一大步。
我们在今年 7 月底启动了一项早期体验计划,其主要目的是加快 web 版 Flutter 应用的落地速度。获选开发者能得到必要协助,在接下来的 6 到 12 个月内在 web 环境中推出生产版本的 Flutter 应用。非常感谢大家的踊跃报名,我们收到了超过 1,000 份示例与申请,但由于名额有限,对无法参加的开发者,我们深表遗憾。不过,目前 web 支持已正式合并到 Flutter 框架中,因此,每一位开发者都有机会利用 Flutter web 支持构建出精美的应用。
Flutter Widget Livebook https://flutter-widget-livebook.blankapp.org/ Panache https://rxlabz.github.io/panache_web/
向我们提供反馈 https://github.com/flutter/flutter/issues
活力社区
Flutter 惊人的成长速度和采用率让我们倍感欣慰。在 Google 内部,有超过 20 个项目正在稳步推进中,凝集着数千位工程师的辛勤付出,其中有部分项目已成功落地,其余的则尚在开发阶段。在本周的 Google 开发者大会上,我们已经与大家分享了全球互联网巨头腾讯的成功经验,介绍了腾讯是如何把 Flutter 灵活地运用到越来越多的产品中,欢迎收看下方视频,了解更多。
腾讯视频链接
https://v.qq.com/x/page/t09240vp8cy.html
Bilibili 视频链接
https://www.bilibili.com/video/av67230699/
△ “亲爱的挑战者,欢迎参加本次 Flutter Widget 挑战赛,我期待着您的精彩表现。请在我提问后,说出正确的 Flutter Widget 名称。您准备好了吗?”
结语
Flutter 1.9.1 版本说明 https://github.com/flutter/flutter/wiki/Release-Notes-Flutter-1.9.1
在 web 平台运行 Flutter
https://flutter.dev/web
ToggleButtons
https://github.com/csells/flutter_toggle_buttons
ColorFiltered
https://github.com/csells/flutter_color_filter
Flutter Widget 知识问答挑战赛
https://assistant.google.com/services/a/uid/000000f3a4034e91
Flutter 开发者社区中文资源: https://flutter.cn
想了解更多 Flutter 内容?
在公众号首页发送关键词 “Flutter”,获取相关历史技术文章;
还有更多疑惑?欢迎点击菜单 “联系我们” 反馈您在开发过程中遇到的问题。
推荐阅读