V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sunbreak
V2EX  ›  Flutter

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

  •  
  •   sunbreak · 2020-07-09 15:59:29 +08:00 · 2203 次点击
    这是一个创建于 1631 天前的主题,其中的信息可能已经有所发展或是发生改变。

    副标题: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 感到兴奋。

    • 快速增长的应用开发者生态系统
    • 多平台支持
    • 高度优化的本地应用
    • 现代 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 是一个现实世界的应用,它可以使用现实世界的数据,特别是你的谷歌联系人列表。

    https://youtu.be/cTFJcq7UTRY

    除了能够管理你的联系人,包括搜索联系人、添加新的联系人和编辑现有的联系人,Flokk 还可以让你将 GitHub 和 Twitter 的手柄信息与你的联系人关联起来。

    Flokk 通讯录应用是用 Flutter 打造的,针对的是桌面。

    GitHub 和 Twitter 通知的显示,将你的联系人变成了你自己的个人社交网络。如果你在 Flokk Contacts 中没有看到你喜欢的社交网络,那么好消息是 Flokk 是完全开源的,所以你可以提交 PR 来添加你的收藏夹。

    除了在社交领域的创新,Flokk 还使用 Flutter 功能,让人看起来感觉很好。仅举一例,深色主题不仅可以切换颜色,而且在切换时还会有动画变化。

    gif

    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的多人游戏。这款游戏以美丽的背景为背景,让来自世界各地的玩家实时对战。

    gif

    在多个 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 (免费版)翻译

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3369 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:59 · PVG 18:59 · LAX 02:59 · JFK 05:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.