写点什么

Flutter 1.9 正式发布!支持 macOS Catalina,Flutter 网页版并入主库

2019 年 9 月 12 日

Flutter 1.9正式发布!支持macOS Catalina,Flutter网页版并入主库

近日,在上海举办的“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;还有新的ToggleButtonsColorFilter小部件,甚至还能测试你对Flutter小部件的了解等等。


原文链接:https://developers.googleblog.com/2019/09/flutter-news-from-gdd-china-flutter1.9.html


2019 年 9 月 12 日 11:193464

评论

发布
暂无评论
发现更多内容

区块链如何深刻变革现代金融?

CECBC区块链专委会

区块链 金融

架构训练营第二周作业

Geek_ce484f

极客大学架构师训练营

设计模式--组合模式/装饰模式

张荣召

Composite Pattern Decorator Pattern

甲方日常 25

句子

生活 随笔杂谈 日常

架构训练营第二周作业

Geek_ce484f

极客大学架构师训练营

第三课代码重构课后作业

Geek_michael

极客大学架构师训练营

第三周 作业1

Yangjing

极客大学架构师训练营

AQS 都看完了,Condition 原理可不能少!

程序员小航

Java 源码 源码阅读 JUC Condition

java安全编码指南之:死锁dead lock

程序那些事

java安全编码 java安全 java安全编码指南

一个草根的日常杂碎(9月30日)

刘新吾

随笔杂谈 生活记录 社会百态

第三周作业

alpha

极客大学架构师训练营

ARTS Week12

丽子

设计模式--正确学习姿势

张荣召

架构师训练营第三周--学习总结

张荣召

区块链技术在司法行业的服务应用

CECBC区块链专委会

区块链 司法

极客时间架构师培训 1 期 - 第 3周总结

Kaven

微服务部署测试简单实践

MySQL从删库到跑路

zookeeper 微服务 dubbo Sprint Boot session

架构师训练营 1 期第 3 周:代码重构 - 作业

piercebn

极客大学架构师训练营

【获奖名单】赢千元数码大奖!竟然如此简单!

InfoQ写作平台官方

美食 摄影 活动专区

区块链有助金融监管效能提升

CECBC区块链专委会

区块链 金融

极客时间架构师培训 1 期 - 第 3 周作业

Kaven

第三周 学习总结

Yangjing

极客大学架构师训练营

全文!马云对数字时代全球化的全新解读

CECBC区块链专委会

全球化 数字时代

不是我不小心

escray

Java ruby ruby-on-rails 面经 101次面试

从三个产业侧影,打开万物智能的应用之匙

脑极体

设计模式-单例模式

张荣召

设计模式--模板模式/策略模式

张荣召

Template Pattern Strategy Pattern

架构师训练营第三周-homework

张荣召

第三周学习心得

alpha

极客大学架构师训练营

重塑产业+价值共识,区块链助力供应链金融数字化

CECBC区块链专委会

区块链 供应链物链

代码重构 - 课后作业

Nick~毓

Flutter 1.9正式发布!支持macOS Catalina,Flutter网页版并入主库-InfoQ