Categories
程式開發

Flutter全平台制霸再进一步:实现Linux桌面应用支持


Flutter 的“野心”不止于跨平台开发,而是全平台制霸:iOS、Android、Web、Linux 我全都要!

Flutter:走向全平台制霸

Flutter 作为谷歌出品的移动 UI 框架,在快速构建 iOS 和 Android 应用及开发、高性能、可移植性上表现优秀,并可以与现有代码一起工作,基于这些特点使其越来越受到开发者的推崇。近几年来我们也看到了越来越多国内外基于 Flutter 开发的最佳实践,目前 Google Play 上也已经涌现了超过 8 万个用 Flutter 实现的兼具快速与精美特点的应用程序。

谷歌此前给 Flutter 的目标一致都是提供一个可移植的框架,从而在各种平台上都能构建以原生速度运行的精美 UI。这意味着在谷歌眼里,iOS 和 Android 应用的跨平台开发不是 Flutter 的终极,它的野心是做一个制霸全平台开发的主流框架。iOS 和 Android 只是开始,远非结束。

过去一年多时间,谷歌团队一直在将 Flutter 跨平台开发的支持扩展到桌面端上,包括 Web、macOS、Windows 和 Linux 几大平台。

在去年的 Google I/O 大会上,谷歌团队宣布了自己的实验性的桌面项目,并逐步把相关成果融合至 Flutter 引擎当中以作为主版本的新增内容。虽然该项目还没有达到生产级水平,但已经可以供爱好者们尝鲜,在 Mac、Windows 及 Linux 等桌面平台上开发 Flutter 应用程序。

在这一过程中,谷歌重构了 Flutter 引擎的大量代码,以支持桌面端的鼠标和键盘输入以及可调整大小的顶级窗口。Flutter 还针对桌面端新加入了很多 UI 特性,如 Material Density 支持和 NavigationRail,以及 Dart:FFI 中的实验特性,和接入系统菜单栏和标准对话框等,从而深度集成进桌面 OS 底层。由此以来,Flutter 便可以用来构建全功能、全尺寸的桌面应用了。

而在 7 月 8 日,谷歌与 Ubuntu 的发行方 Canonical 共同发布了 Flutter 在 Linux 上的第一个 Alpha 版本,标志着 Flutter 向 Linux 桌面端的扩展之路正式迈出了第一步!

为什么要在 Linux 上使用 Flutter?

当谷歌在去年宣布要为 Flutter 添加桌面级应用程序支持时,Canonical 就意识到这对于 Linux 发行版来说是一个大好机遇。Flutter 有望大大简化 Linux 应用的开发过程,应用程序开发人员可以非常轻松地通过 Snap Store(Linux 应用程序商店)为 Linux 用户发布他们的应用程序。Linux 成为一流的 Flutter 目标平台后,开发人员就可将其应用传播给数以百万计的 Linux 用户,这些用户将会有更多高质量的应用可用。

对于 Linux 平台来说,Flutter 有很多颇具吸引力的优秀特性:

  • 蓬勃发展的应用程序开发人员生态系统
  • 多平台支持
  • 高度优化的原生应用程序
  • 现代 UI 框架,支持声明式,反应式和可组合的小部件
  • 包括 Visual Studio Code、Android Studio 和 IntelliJ 在内的丰富开发平台支持

Canonical 组建了一支开发团队与谷歌紧密合作,努力将 Flutter 带入 Linux 世界。两家公司未来将继续合作改进 Flutter 的 Linux 支持,并确保 Linux 平台的支持水平与其他平台对等。

为了证明 Flutter 已为桌面端做好了准备,Canonical 与 gskinner.com 的设计师和开发人员合作,创建了一个创新而精美的 Flutter 桌面应用程序——Flokk

除了能够管理用户的联系人(包括搜索联系人、添加新联系人和编辑现有联系人)之外,用户在 Flokk 中还能将 GitHub 和 Twitter 处理的信息与联系人相关联。此外,Flokk 还使用了一系列 Flutter 特性来改进 UI 体验。例如,应用不仅有深色主题,而且在切换颜色主题时还有动画效果。

Flutter全平台制霸再进一步:实现Linux桌面应用支持 1

Flokk Contacts 应用背后的创意团队由 Grant Skinner 领导,他以出色的设计和打造创新的用户体验而知名。Grant 是这样评价在 Linux 上使用 Flutter 的体验的:

“构建 Flokk Contacts 应用非常容易!我们几乎无需进行任何调整就可以将我们在 Flutter 上的所有专业知识应用在 Linux 目标平台上,并且成品应用运行起来非常出色。与 Canonical 团队合作是一次很棒的经历。他们热心,投入并充满激情,努力让 Flutter 在包括 Linux 的所有平台上都有更好的表现。这是一个了不起的项目,我很高兴能够使用 Flutter 为另一个主流操作系统开发应用。”

在 Linux 上安装 Flutter

为了让用户可以轻松地在自己的 Linux 系统中安装 Flutter,谷歌和 Canonical 在 Snap Store 中提供了 Linux 版的 Flutter SDK snap

Flutter SDK snap 打包了在 Linux 上开发 Flutter 应用所需的一切内容。无需安装众多开发依赖项,只需安装 Flutter SDK snap 和 IDE 即可创建、构建和发布 Linux 应用程序了。

例如,如果你想为 Linux 开发 Flutter 应用程序,并且你选择的 IDE 是 Visual Studio Code,那么只需在 Linux 终端上输入:

$ snap install --classic flutter
$ snap install --classic code
$ code --install-extension dart-code.flutter

如果你还想使用 Linux 开发移动应用,则可以安装 Android SDK 或 Android Studio(后者包括了 Android SDK)来实现目的。有关 Flutter SDK 的更多信息,请访问:

https://snapcraft.io/flutter

适用于 Linux 桌面的 Flutter

在 Linux 机器上安装 Flutter SDK 之后,你需要访问 Flutter dev(或 master)通道并启用 Linux 桌面支持以构建桌面应用:

$ flutter channel dev
$ flutter upgrade
$ flutter config --enable-linux-desktop

现在,当你创建一个新的 Flutter 项目时将获得一个 Linux 子目录,这样你的应用就可以作为桌面应用运行在你的 Linux 机器上了:

$ flutter create counter
$ cd counter
$ flutter run -d linux

Flutter全平台制霸再进一步:实现Linux桌面应用支持 2

你将获得一个使用 Flutter 构建,且运行在 GTK+ 最新稳定版本上的全新 Linux 应用程序。如果你有一个现有的 Flutter 项目,并且希望在启用 Linux 目标后向这个项目添加 Linux 支持,则可以像下面这样添加 Linux 子文件夹:

$ cd my_flutter_app
$ flutter create .

这样你的项目就可以运行在 Linux 桌面上了。

写在最后

Flutter 项目从诞生之初就备受瞩目,有谷歌背书的 Flutter 不仅设计优秀,而且在规划与执行力上也非常规开源项目可比。谷歌为了支持 Flutter 的发展,不仅打造了 Dart 语言,更是做了时间、节奏精准的规划,即便是在只能支持移动平台的发展初期,也毫不掩饰自己全平台制霸的“野心”。

在过去的一段时间里,我们看着 Flutter 一步步从爱好者的“玩物”到开发团队的尝鲜再到生产级的使用,也许明年,Linux 平台的 Flutter 已经可以在生产环境中发光发热了。

Flutter:小孩才做选择,大人全都要!