写点什么

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:193541

评论

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

Spring Security入门到实践(一)HTTP Basic在Spring Security中的应用原理浅析

itlemon

源码分析 spring security

JVM 垃圾回收机制

Alex🐒

JVM 深入理解JVM

架构师训练营第7周作业

时来运转

玩转混合加密 | 精美配图

阿宝哥

安全 加密解密 数据加密

【数据结构】Java 常用集合类 ArrayDeque

Alex🐒

Java 源码 数据结构

Java并行程序基础

itlemon

Java 高并发 并行

JVM 运行时数据区

Alex🐒

JVM 深入理解JVM

【干货分享】通过命令操作来学习Git

itlemon

git git入门

优雅地利用c++编程从1乘到20 | 技术总结

chaozh

c++

解决 Harbor 启动失败故障

FeiLong

Docker Harbor Docker-compose

记一次bem命名规范使用优化方案

前端有的玩

Vue npm React bem

Flask 中的 Sessions

Leetao

Python flask Web框架

架构师训练营 - 命题作业 第 7 周

铁血杰克

彻底弄懂C++11右值引用 | 技术总结

chaozh

c++

JVM 对象内存布局

Alex🐒

JVM 深入理解JVM

程序员面试必备战衣 | T恤衫 - 程序员穿搭

chaozh

GEEK

创业使人成长系列 (5)-申请国家高新企业

石云升

高新企业

架构师训练营第七周作业-性能测试

sunnywhy

Ubuntu 20.04 上安装和配置 VNC

酱紫的小白兔

vcenter 5.5故障处理

小小文

vcenter

JVM 垃圾回收器 CMS

Alex🐒

JVM 深入理解JVM GC

深入理解 JS 中的变量提升

墨子苏

Java 前端

深入Java Web技术内幕(一)浅析Web请求过程

itlemon

Java

JVM 类加载机制

Alex🐒

JVM 深入理解JVM

JVM 垃圾回收器 G1

Alex🐒

JVM 深入理解JVM GC

【译文】创建 Kubernetes manifest 的初学者指南

FeiLong

Kubernetes

【数据结构】Java 常用集合类 PriorityQueue

Alex🐒

Java 源码 数据结构

深入理解 JS 中的 this

墨子苏

Java 前端

架构师训练营第7周总结

时来运转

并发必备基础知识汇总

itlemon

并发 基础

压测工具如何选择?

elfkingw

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

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