[Flutter 翻译]Canonical 通过 Flutter 实现对 Linux 桌面应用的支持 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sunbreak
V2EX    Flutter

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

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

    副标题: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     Solana     2238 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 01:09 PVG 09:09 LAX 17:09 JFK 20:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86