[Flutter 翻译]Canonical 通过 Flutter 实现对 Linux 桌面应用的支持

2020-07-09 15:59:29 +08:00
 sunbreak

副标题:Ubuntu 团队已经为所有 Linux 发行版上的 Flutter 应用程序制作了一个新的基于 GTK+的主机。

原文地址: https://medium.com/flutter/announcing-flutter-linux-alpha-with-canonical-19eb824590a9

原文作者: https://medium.com/@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 感到兴奋。

谷歌最初宣布宣布支持 Flutter 桌面,首先是支持 macOS 的 alpha 版本,并计划支持 Linux 和 Windows 。Canonical 对 Flutter 进行了大量投资,专门成立了一个开发者团队,与谷歌的开发者一起为大多数 Linux 发行版带来最佳的 Flutter 体验。Canonical 将继续与谷歌合作,进一步完善对 Linux 的支持,并保持与其他支持平台的功能对等。

Flokk 。证明 Flutter 已经为桌面做好了准备。

为了证明 Flutter 已经为桌面做好了准备,我们与gskinner的设计师和开发人员合作,创建了一个创新的、漂亮的 Flutter 桌面应用。Flokk 是一个现实世界的应用,它可以使用现实世界的数据,特别是你的谷歌联系人列表。

https://youtu.be/cTFJcq7UTRY

除了能够管理你的联系人,包括搜索联系人、添加新的联系人和编辑现有的联系人,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 本地功能的插件。

这些插件中的每一个都可以供你在你的应用程序中使用,以及作为如何从你的 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 (免费版)翻译

1993 次点击
所在节点    Flutter
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/688588

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX