Flutter 2.0 来了

Flutter 2.0 来了

作为 Flutter 的一次重大版本升级,Flutter 2.0 将帮助开发人员立足任意平台创建起美观、快速且能够轻松移植的应用程序。在 Flutter 2.0 的支持下,用户可以使用相同的代码库将原生应用程序发布至 iOS、Android、Windows、macOS 以及 Linux 五大系统阵营之上。此外,Flutter 2.0 还能够完美契合 Chrome、Firefox、Safari 以及 Edge 等网络浏览器,甚至可以被嵌入至汽车、电视与智能家居当中,借此带来最普遍、最具便携性的技术体验。

这一系列优异的特性,其背后的秘密,就是 Dart 语言。Dart 是针对多平台开发进行了优化的跨平台编程语言。

Dart 的独特功能涵盖三个方面:

可移植性:高效的编译器为设备生成 x86 和 ARM 机器代码,并为 Web 生成优化后的 JavaScript 代码。所以 Dart 的持续目的就是支持:移动设备、台式机、应用后端等等。大量的库和软件包提供了可在所有平台上使用的一致性 API,从而进一步降低了创建真正的多平台应用程序的成本。

高效:Dart 平台支持热重装,从而可以对本机设备和 Web 进行快速地迭代和开发。Dart 提供了丰富的结构,如 isolates 和 async/await,用于处理常见的并发和事件驱动的模式。

健壮:Dart 是健全的,空安全系统会在开发过程中捕获错误。整个平台具有高度的可扩展性和可靠性,Dart 已经有十多年的历史被运用于生产开发,其中包括 Google Ads 和 Google Assistant 等业务关键型应用程序。

这次更新,Dart 也来到了 2.12 版本,其中最为主要的两点就是全面空安全以及 FFI 的稳定版本。FFI 是一种互操作性机制,可以让开发者调用 c 语言编写的现有代码。在不使用 FFI 的情况下,如果我们想开发 iOS 平台相关的音视频接口,那么我们需要通过 flutter channel 来进行平台接口与 dart 接口的互通。使用 FFI,可以直接用 dart 调用 C 的接口,相比于用 flutter channel 的方式,减少了数据序列化和反序列化所带来的性能损耗。而且 flutter 2.0 还提供了自动生成 FFI 接口绑定的工具,可以根据 C 头文件暴露的接口自动创建 FFI 包装器。

另外一个非常重要的新功能就是全面空安全。空安全是在编译器编译阶段就能判断出代码是否有空指针风险,从而在代码真正运行在设备上时避免空指针异常的一种策略。

引入空安全,并不是完全消灭空值,而是给开发者一个更直观的空状态信息。全面空安全带来的收益主要有两个方面:

1. 在编码时即可暴露空指针的问题,IDE 直接会报红。

2. 性能提升,编译结果的大小和运行速度都获得提升,得利于非空对象无需进行空异常的判断。

除了以上两点非常重要的更新之外,flutter 2.0 还增加了很多新的 widget,还修改了不少老的 api,对于这点,flutter 提供了迁移工具 flutter fix。Dart CLI 工具添加了一个新的命令行选项,名为 dart fix,它可以识别出你当前的代码迁移到 flutter 2.0 需要进行哪些更改。你可以通过 dart fix –dry-run 来查看所有需要修复的代码,然后通过 dart fix –apply 来进行应用修复。但是这里我们并不推荐你这么做,因为自动迁移针对于 plugin 的项目很有可能会出问题,这里还是推荐在 IDE 中,根据 IDE 的提醒,来逐步进行修改,背后应用的机制是一样的。

[IntelliJ]    在IntelliJ中的示例代码
[VS Code]    在VS Code中的示例代码

融云 SDK 目前已全面适配 Flutter 语言,可在移动端快速提供 IM 及音视频能力,为应用提供稳定可靠的通信保障。目前功能涵盖会议、直播、教育、娱乐等主流场景,上手简单,提供 7*12 小时全方位技术支持,拥有众多企业客户,真诚期待您的使用。

       

标签: ,