Canonical 通过 Flutter 实现对 Linux 桌面应用的支持
副标题:Ubuntu 团队已经为所有 Linux 发行版上的 Flutter 应用程序制作了一个新的基于 GTK+的主机。
原文地址: https://medium.com/flutter/announcing-flutter-linux-alpha-with-canonical-19eb824590a9
原文作者: https://medium.com/[@csells](/user/csells)
发布时间:2020 年 7 月 8 日
作者:Chris Sells (Google) & Ken VanDine (Canonical)
Google 对 Flutter 的目标一直是提供一个可移植的工具包,用于构建以原生速度运行的漂亮 UI,无论你的目标是哪个平台。为了验证这一能力,我们首先关注移动平台 Android 和 iOS,在这两个平台上,我们已经看到有超过 8 万个快速、漂亮的 Flutter 应用发布到 Google Play 。
为了在这一成功的基础上再接再厉,一年多来,我们一直在将我们的关注点扩展到包括桌面级体验,包括网络和桌面操作系统:macOS 、Windows 和 Linux 。这项工作包括对引擎进行大量重构,以支持桌面风格的鼠标和键盘输入,以及可调整大小的顶层窗口。它还包括新的 UI 功能,能很好地适应桌面,如 Material Density 支持和NavigationRail,以及在Dart:FFI中的实验和对系统菜单栏和标准对话框的访问,与底层桌面操作系统深度集成的实验。所有这些工作都是为了确保 Flutter 除了适合移动风格的体验外,还能处理全功能、全尺寸的桌面应用。
长期以来,我们的愿景是让 Flutter 为平台提供动力。我们已经看到这一点在谷歌通过Assistant等产品体现出来,所以现在我们很高兴看到其他人利用 Flutter 为更多平台提供动力。今天,我们很高兴与世界上最流行的桌面 Linux 发行版Ubuntu的发行商 Canonical 一起,共同宣布 Flutter 的 Linux alpha 的可用性。
为什么 Linux 要用 Flutter ?
去年,当 Google 宣布用 Flutter 支持桌面级应用时,Canonical 看到了一个令人兴奋的机会,使包括 Ubuntu 在内的 Linux 发行版成为对 Flutter 应用开发者有吸引力的目标平台。Flutter 的原生跨平台故事正在迅速发展,Canonical 希望成为先锋。通过在 Flutter 中实现对桌面 Linux 的支持,Canonical 让应用开发者可以非常容易地通过 Linux 的应用商店 Snap Store 为 Linux 用户发布应用。通过使 Linux 成为一流的 Flutter 平台,Canonical 正在邀请应用开发者向数百万 Linux 用户发布他们的应用,并扩大向他们提供高质量的应用。
关于 Flutter 的一些事情让 Canonical 感到兴奋。
- 快速增长的应用开发者生态系统
- 多平台支持
- 高度优化的本地应用
- 现代 UI 框架,支持声明式、反应式和可组合的 widget 。
- 使用 Visual Studio Code 、Android Studio 和 IntelliJ 的丰富开发平台。
谷歌最初宣布宣布支持 Flutter 桌面,首先是支持 macOS 的 alpha 版本,并计划支持 Linux 和 Windows 。Canonical 对 Flutter 进行了大量投资,专门成立了一个开发者团队,与谷歌的开发者一起为大多数 Linux 发行版带来最佳的 Flutter 体验。Canonical 将继续与谷歌合作,进一步完善对 Linux 的支持,并保持与其他支持平台的功能对等。
Flokk 。证明 Flutter 已经为桌面做好了准备。
为了证明 Flutter 已经为桌面做好了准备,我们与gskinner的设计师和开发人员合作,创建了一个创新的、漂亮的 Flutter 桌面应用。Flokk 是一个现实世界的应用,它可以使用现实世界的数据,特别是你的谷歌联系人列表。
除了能够管理你的联系人,包括搜索联系人、添加新的联系人和编辑现有的联系人,Flokk 还可以让你将 GitHub 和 Twitter 的手柄信息与你的联系人关联起来。
Flokk 通讯录应用是用 Flutter 打造的,针对的是桌面。
GitHub 和 Twitter 通知的显示,将你的联系人变成了你自己的个人社交网络。如果你在 Flokk Contacts 中没有看到你喜欢的社交网络,那么好消息是 Flokk 是完全开源的,所以你可以提交 PR 来添加你的收藏夹。
除了在社交领域的创新,Flokk 还使用 Flutter 功能,让人看起来感觉很好。仅举一例,深色主题不仅可以切换颜色,而且在切换时还会有动画变化。
Flutter 使 Flokk 能够利用流畅的动画、高性能的滚动和简单的主题。
Flokk Contacts 应用背后的创意团队是由Grant Skinner领导的,他以卓越的设计和创新用户体验的实现而闻名。对于在 Linux 上与 Flutter 的合作,Grant 这样说。
"构建 Flokk Contacts 应用是一件轻而易举的事情! 我们能够将我们之前在 Flutter 方面的所有专业知识应用到 Linux 上,几乎没有任何调整,应用程序运行得非常好。与 Canonical 团队合作是一次美妙的经历;他们热情、投入,并且热衷于让 Flutter 不仅适用于 Linux,而且适用于每个平台。这是一个了不起的项目,我很高兴能够用 Flutter 瞄准另一个主要的操作系统。" - Grant Skinner
如果你想在 Linux 机器上使用 Flokk 应用,你可以在GitHub上下载最新版本。或者,如果你正在运行 snapd,你可以从Snap Store下载 Flokk 应用。
在 Linux 上轻松安装 Flutter
现在你已经看到了 Flutter 对于桌面级应用的工作效果,尤其是在 Linux 上,你会想让它在自己的 Linux 机器上运行。为了使这一点尽可能的简单,我们很高兴在Snap Store中提供 Flutter SDK for Linux 作为 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 。
Flutter for Linux 桌面
一旦在 Linux 机器上安装了 Flutter SDK,要构建桌面应用就需要升级到 Flutter dev 或 master 通道。然后启用 Linux 桌面支持。 启用 Linux 桌面支持:
$ flutter channel dev
$ flutter upgrade
$ flutter config --enable-linux-desktop
现在,当你创建一个新的 Flutter 项目时,你会得到一个 linux 子目录,让你在 Linux 桌面上运行应用程序。
$ flutter create counter
$ cd counter
$ flutter run -d linux
著名的 Flutter Counter 应用也能在 Linux 上运行得很好。
你将得到的是一个用 Flutter 构建的、运行在最新稳定版 GTK+上的闪亮的新Linux
应用。如果你有一个现有的 Flutter 项目,你想在启用 Linux 后添加 Linux 支持,你可以像这样添加 linux 子目录。
$ cd my_flutter_app
$ flutter create .
这将创建linux
子目录与 Runner 项目,你需要在 Linux 桌面上构建和运行你的 Flutter 应用程序。
从 Flutter 访问 Linux 中的本地代码
除了通过编写 Dart 创建 Flutter 小部件来支持桌面外,你的 Linux 桌面应用程序还可以使用平台通道或C/C++的 Dart 外函数接口来访问所有的原生 Linux 。或者,如果你想重用已有的代码,你可以在 pub.dev,Dart 和 Flutter 的包管理器网站上找到这些代码。在 pub.dev 上,你会发现大部分的包都是纯 Dart 的,其中大部分在 Linux 应用中工作得很好。有些包,被称为插件,其中有针对一个或多个平台的本地代码。作为此次发布的一部分,我们在 pub.dev 上发布了三个使用 Linux 本地功能的插件。
- url_launcher:在提供的 URL 上启动默认浏览器。
- shared_preferences: 在应用程序会话之间共享的用户偏好。
- path_provider:特殊用途目录的路径信息,如下载、图片等。
这些插件中的每一个都可以供你在你的应用程序中使用,以及作为如何从你的 Flutter 代码中原生地访问 Linux 的一个例子,比如url_launcher 的 Linux 实现。
部署到 Snap Store
要将你的 Flutter 应用部署到 Snap Store,你首先需要安装 Snapcraft,这个工具你将用来构建和发布你的应用作为一个快照。
$ sudo snap install snapcraft --classic
要驱动 Snapcraft 工具,你需要在你的应用程序的项目目录下创建一个snapcraft.yaml
文件。作为一个例子,这是 Flokk 的snapcraft.yaml
文件。
name: flokk-contacts
version: 1.0.1
summary: Flokk Contacts
description: A fresh and modern Google Contacts manager that integrates with GitHub and Twitter.
confinement: strict
base: core18
grade: stable
apps:
flokk-contacts:
command: flokk-contacts
extensions: [flutter-master]
plugs:
- network
parts:
flokk-contacts:
source: .
plugin: flutter
flutter-target: lib/main.dart # 应用程序的主入口点文件。
在你的snapcraft.yaml
文件所在的目录下,你现在可以运行 snapcraft 来构建你的应用程序的 snap 。
$ snapcraft
如果一切顺利,这将在你当前的工作目录下生成一个文件,比如flokk-contacts_1.0.1_amd64.snap
。
一旦你在 Snap Store 中设置了发布账户,你就可以发布你的 snap 了。
$ snapcraft 登录
$ snapcraft register flokk-contacts.
$ snapcraft upload flokk-contacts_1.0.1_amd64.snap --release edge
该命令将把应用程序上传到 Snap Store,并尝试将其发布到边缘通道中。一旦您的应用程序发布到边缘通道,就可以通过 Snap Store 桌面客户端或使用命令行进行安装。
$ snap install --edge flokk-contacts
有关构建你的第一个快照并在 Snap Store 中发布的更多细节,请参见 https://snapcraft.io/first-snap#flutter,获取指导教程。
Flutter Linux 桌面样本
Flokk 应用是一个针对 Linux 桌面的现实世界 Flutter 应用的优秀例子。如果想了解更简单的示例,你可以看看照片搜索应用,它也是专门为展示桌面功能而打造的。
尝试 Linux 上的照片搜索示例
照片搜索是一款简单的在线照片搜索应用,它使用多个插件来接入原生平台功能,支持 macOS 和 Linux 。
如果想了解一个 Linux 桌面应用的例子,并有一步一步的说明,我推荐《编写一个 Flutter 桌面应用》 codelab,它指导你使用 OAuth 和 GraphQL 在 Flutter 中构建一个 GitHub 客户端。
Flutter 的 GitHub codelab 客户端应用在行动中。
对于一个更全面的应用,可以锻炼 Flutter 更多的表面积,以及提供几个小程序,我推荐Flutter Gallery,它是去年重新设计的,支持桌面以及手机。如果你想看看它的运行情况,你也可以在Snap Store上查看。
Flutter Gallary 样品可在 Snap 商店购买
又有一款桌面应用展现了 Flutter 有趣的一面,它是由 Thorsten Lorenz 打造的一款名为batufo的多人游戏。这款游戏以美丽的背景为背景,让来自世界各地的玩家实时对战。
在多个 Flutter 平台上实时播放
Thorsten 一直在构建这个游戏,以支持多个 Flutter 平台,包括 Linux,macOS,Android 和 iOS 。如果你想看看他是如何做到的,并跟随未来的更新,他将他的编码课程以视频的形式提供,代码也可以在 GitHub 上获得。如果要从 Linux 上安装游戏,你可以从Snap Store上把它拉下来。
概要
通过这个 alpha 版本以及 Google 和 Canonical 之间的紧密合作,Linux 开发者可以为他们选择的操作系统获得 Flutter 支持。通过快照安装 Flutter SDK。使用 Visual Studio Code 或 Android Studio 在 Linux 上构建和测试你的桌面应用。将您的应用部署到 Snap Store 。最新的细节,请看flutter.dev 上的桌面页面。最重要的是,一定要提供反馈,这样我们才能继续让 Flutter 在 Linux 上做到最好,就像我们努力为每个支持的 Flutter 平台做的那样。
来自 Canonical 团队的 Flutter for Linux 是我们的梦想向前迈出的一大步,让 Flutter 成为构建应用的最佳方式,无论你的目标是哪个平台。针对桌面平台,使得 Flutter 引擎对谷歌本身无法直接支持的长尾设备的适应性更强,但我们计划继续为这些设备建立合作伙伴关系,并启用生态系统。
只要有设备需要快速、漂亮的应用,那就是我们希望 Flutter 出现的地方。
通过 www.DeepL.com/Translator (免费版)翻译
[Flutter 翻译] Canonical 通过 Flutter 实现对 Linux 桌面应用的支持
更多关于Canonical 通过 Flutter 实现对 Linux 桌面应用的支持的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Canonical 通过 Flutter 实现对 Linux 桌面应用的支持的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
针对“[Flutter 翻译] Canonical 通过 Flutter 实现对 Linux 桌面应用的支持”的帖子,以下是一个专业且精炼的回复:
非常高兴看到Canonical通过Flutter为Linux桌面应用带来了新的活力。这一举措无疑将极大地促进跨平台应用开发,使得开发者能够利用Flutter的丰富特性和强大功能,轻松构建出既美观又高效的Linux桌面应用。
Flutter作为Google开源的移动UI框架,以其独特的渲染引擎和Dart编程语言,为开发者提供了一个高效、灵活且易于维护的开发环境。而Canonical作为Ubuntu Linux的发行商,此次与Flutter的结合,无疑将进一步推动Linux桌面生态的繁荣和发展。
通过Flutter,开发者可以更加便捷地实现UI界面的跨平台一致性,同时享受Flutter带来的高性能和流畅的用户体验。这对于那些希望在Linux平台上拓展业务的开发者来说,无疑是一个巨大的福音。
此外,Canonical的这一举措也将为Linux桌面应用带来更多的创新和可能性。随着越来越多的开发者开始使用Flutter来开发Linux桌面应用,我们期待看到更多优秀的应用作品涌现出来,为Linux用户带来更加丰富和多样化的选择。
总之,Canonical通过Flutter实现对Linux桌面应用的支持,无疑是一个值得庆祝的里程碑事件。我们期待这一合作能够持续深化,为Linux桌面生态的发展注入新的动力和活力。