Canonical 在 Linux 上提供 Flutter 桌面应用支持

作者 / Chris Sells (Google) 和 Ken VanDine (Canonical)cFw每天发布大量与生活相关的资讯平台

Google 为 Flutter 设置的目标始终不变: 提供便携的工具包,用于构建以原生速度运行的精美 UI,且不受目标平台限制。为了验证这一能力,我们首先着眼于 Android 和 iOS 移动平台。目前在 Google Play 上已有超过 8 万款运行流畅、设计精美的 Flutter 应用发布。cFw每天发布大量与生活相关的资讯平台

为了在这一成功的基础上再接再厉,一年多来,我们又将重点延伸到桌面级体验,包括 Web 和桌面操作系统: macOS、Windows 和 Linux。这项工作包括对引擎进行大量重构,以支持桌面风格的鼠标键盘输入和可调整大小的顶层窗口。还包括能够很好地适应桌面的新界面功能,比如 Material Density (Material 内容密度) 和 NavigationRail,通过 Dart:FFI与底层桌面操作系统达成深度集成,以及对系统菜单栏与标准对话框的访问。所有工作都是为了确保 Flutter 除了适用于移动体验之外,还可以处理全功能、全尺寸的桌面应用。 cFw每天发布大量与生活相关的资讯平台

NavigationRailcFw每天发布大量与生活相关的资讯平台

https://api.flutter.cn/flutter/material/NavigationRail-class.htmlcFw每天发布大量与生活相关的资讯平台

Dart:FFIcFw每天发布大量与生活相关的资讯平台

https://dart.cn/guides/libraries/c-interopcFw每天发布大量与生活相关的资讯平台

我们一直致力于让 Flutter 为各平台提供动力。在 Google 的 Assistant 等产品上,这一点已经有所体现。现在,我们很高兴有更多公司使用 Flutter 来为更多平台赋能。我们很荣幸与全球最流行的桌面 Linux 发行版 Ubuntu的发行商 Canonical 一起,共同宣布推出 Flutter 的 Linux alpha 版。cFw每天发布大量与生活相关的资讯平台

Ubuntu https://ubuntu.com/

为什么在 Linux 上推出 Flutter?cFw每天发布大量与生活相关的资讯平台

去年,当 Google 宣布 Flutter 支持桌面级应用时,Canonical 决定抓住这个机会,将包括 Ubuntu 在内的 Linux 发行版打造成 Flutter 应用开发者喜爱的目标平台。Flutter 的原生跨平台之旅正在如火如荼地开展,而 Canonical 希望成为开路先锋。得益于在 Flutter 中实现的桌面 Linux 支持,Canonical 让应用开发者可通过 Linux 的应用商店 Snap Store 向 Linux 用户轻松发布应用。Canonical 将 Linux 打造成一流的 Flutter 平台,并邀请 Flutter 应用开发者向数百万 Linux 用户发布自己的作品,从而为用户们带来更多高品质的应用。 cFw每天发布大量与生活相关的资讯平台

Flutter 为 Canonical 提供的价值:cFw每天发布大量与生活相关的资讯平台

快速增长的应用开发者生态系统cFw每天发布大量与生活相关的资讯平台

多平台支持cFw每天发布大量与生活相关的资讯平台

高度优化的原生应用cFw每天发布大量与生活相关的资讯平台

现代化的界面框架,支持声明式 (declarative)、响应式 (reactive) 以及可组合 (composable) 的 widgetcFw每天发布大量与生活相关的资讯平台

通过 Visual Studio Code、Android Studio 和 IntelliJ 提供丰富的开发平台cFw每天发布大量与生活相关的资讯平台

在 Google 最初宣布的 Flutter 桌面支持中,首先是支持 macOS 的 alpha 版本,对于 Linux 和 Windows 仍处于计划阶段。Canonical 在 Flutter 中进行了大量投资,专门成立了一支开发者团队,与 Google 的开发者一起为大多数 Linux 发行版带来最佳的 Flutter 体验。Canonical 将继续与 Google 合作,进一步完善 Linux 支持,并使其功能与其他支持的平台保持同步。cFw每天发布大量与生活相关的资讯平台

Flokk 应用: Flutter 已为桌面系统做好准备cFw每天发布大量与生活相关的资讯平台

为了证明 Flutter 已为桌面系统做好准备,我们与 gskinner 的设计师和开发者合作,打造出创新性的精美 Flutter 桌面应用: Flokk。这是一款已经正式发布的应用,它使用真实的数据,比如您的 Google 通讯录列表。cFw每天发布大量与生活相关的资讯平台

gskinnercFw每天发布大量与生活相关的资讯平台

http://gskinner.com/cFw每天发布大量与生活相关的资讯平台

将 Flutter 带到 Linux 中: Flokk ContactscFw每天发布大量与生活相关的资讯平台

https://www.bilibili.com/video/BV17f4y1R7vG/cFw每天发布大量与生活相关的资讯平台

除了搜索、添加和编辑联系人等管理功能外,Flokk 还可以让您关联 GitHub 和 Twitter 来处理联系人信息。cFw每天发布大量与生活相关的资讯平台

cFw每天发布大量与生活相关的资讯平台

△ Flokk Contacts 应用由 Flutter 打造,在桌面运行cFw每天发布大量与生活相关的资讯平台

通过显示 GitHub 和 Twitter 通知,您的联系人列表就成为了强大的个人社交网络。如果您在 Flokk Contacts 中没有看到自己想连接的社交网络,不用担心: Flokk 是 完全开源的,您可以提交 PR 让其添加您心仪的社交网络。 cFw每天发布大量与生活相关的资讯平台

GitHub: FlokkcFw每天发布大量与生活相关的资讯平台

https://github.com/gskinnerTeam/Flokk/cFw每天发布大量与生活相关的资讯平台

除了在社交领域创新,Flokk 还使用 Flutter 功能提升观感。以下图为例,深色主题不是单纯地切换颜色,而是会在切换时呈现动画效果。cFw每天发布大量与生活相关的资讯平台

cFw每天发布大量与生活相关的资讯平台

△ Flutter 使 Flokk 得以实现流畅的动画、高性能滚动和轻松的主题切换cFw每天发布大量与生活相关的资讯平台

Flokk Contacts 应用背后的创意团队由 Grant Skinner 领导,他以出色设计和创新用户体验而闻名。对于 Linux 上的 Flutter,Grant 这样说:cFw每天发布大量与生活相关的资讯平台

构建 Flokk Contacts 应用实在太轻松了!我们能够把过去的 Flutter 专业知识全部运用到 Linux 上,几乎不需要任何调整,而且这个应用运行得非常好。与 Canonical 团队的合作也相当美妙: 他们热情又投入,全力让 Flutter 在 Linux 和所有其他平台上都能变得更好。这是一个了不起的项目,我很荣幸能够利用 Flutter 进驻另一个主要操作系统。cFw每天发布大量与生活相关的资讯平台

— Grant SkinnercFw每天发布大量与生活相关的资讯平台

如果您想在 Linux 机器上使用 Flokk 应用,可以从 GitHub下载最新版本。或者,如果您正在使用 snapd,可以从 Snap Store下载 Flokk 应用。cFw每天发布大量与生活相关的资讯平台

在 GitHub 上获取 Flokk https://github.com/gskinnerTeam/Flokk/releases 在 Snap Store 上获取 Flokk https://snapcraft.io/flokk-contacts

在 Linux 上轻松安装 FluttercFw每天发布大量与生活相关的资讯平台

了解到 Flutter 应用在桌面 (尤其是在 Linux 中) 运行时的优异表现后,您想必希望在自己的 Linux 机器上实际体验它。为使过程尽可能简单,我们特别在 Snap Store 中提供了 Linux 版 Flutter SDK 的 snap (Snap Store 中分发的包被称为 snap)。Flutter SDK snap 提供了在热门 Linux 发行版上开发 Flutter 应用所需的一切。只需安装 Flutter SDK snap 和您最喜爱的 IDE,无需安装大量开发依赖项,就可以立即开始创建、编译并发布您的 Linux 应用。cFw每天发布大量与生活相关的资讯平台

例如,如果您想为 Linux 开发 Flutter 应用,并且选择的 IDE 是 Visual Studio Code,那么在 Linux 终端上,您只需使用以下命令:cFw每天发布大量与生活相关的资讯平台

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

如果您还想使用 Linux 开发移动应用,只需安装 Android SDK 或 Android Studio (里面包含 Android SDK)。有关 Flutter SDK snap 的更多信息,请访问下方链接cFw每天发布大量与生活相关的资讯平台

安装 Android Studio https://developer.android.google.cn/studio/install#linux Flutter SDK snap https://snapcraft.io/flutter

适用于 Linux 桌面的 FluttercFw每天发布大量与生活相关的资讯平台

在 Linux 机器上安装 Flutter SDK 后,要构建桌面应用,您需要升级为 Flutter dev 或 master 渠道。然后启用 Linux 桌面支持:cFw每天发布大量与生活相关的资讯平台

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

现在,在创建新的 Flutter 项目时,您将获得一个 linux子目录,这个子目录让您可以在 Linux 桌面上运行应用: cFw每天发布大量与生活相关的资讯平台

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

cFw每天发布大量与生活相关的资讯平台

△ 大家熟悉的 Flutter Counter 应用也可以在 Linux 上流畅运行cFw每天发布大量与生活相关的资讯平台

您将得到一个使用 Flutter 构建、运行在最新稳定版 GTK+ 上的崭新 Linux 应用。如果您已经有一个 Flutter 项目,想为其添加 Linux 支持,那么可以按以下方式添加 linux子目录:cFw每天发布大量与生活相关的资讯平台

$cdmy_flutter_app $flutter create .

这将创建带有 Runner 项目的 linux子目录,您需要通过这个项目在 Linux 桌面上构建和运行您的 Flutter 应用。cFw每天发布大量与生活相关的资讯平台

Flutter 调用 Linux 原生代码cFw每天发布大量与生活相关的资讯平台

除了通过编写 Dart 代码创建 Flutter widget 来支持桌面之外,您的 Linux 桌面应用还可以使用平台通道C/C++ 的 Dart 外部函数接口访问原生 Linux 的全部功能。或者,如果您想重复使用现有代码,可以在 pub.dev 上找到所需代码,pub.dev 是 Dart 和 Flutter 的 package 管理平台。pub.dev 上大部分的 package 完全使用 Dart 编写,其中大多数都可以在 Linux 应用中正常运行。有些 package (被称作插件) 里包含特定于一个或多个平台的原生代码。作为今天发布的 Flutter Linux 版本的一部分,我们在 pub.dev 上发布了三个使用 Linux 原生功能的插件:cFw每天发布大量与生活相关的资讯平台

url_launcher: 使用提供的网址启动默认浏览器 https://pub.flutter-io.cn/packages/url_launcher shared_preferences: 在应用会话之间共享的用户偏好设置 https://pub.flutter-io.cn/packages/shared_preferences path_provide r: 专用目录 (例如下载、图片等) 的路径信息 https://pub.flutter-io.cn/packages/path_provider 平台通道 https://flutter.cn/docs/development/platform-integration/platform-channels Dart 外部函数接口 https://dart.cn/guides/libraries/c-interop pub.dev (Linux) http://pub.flutter-io.cn/flutter/packages?platform=linux

您可以在应用中使用这些插件,还可以通过它们了解如何通过 Flutter 代码访问原生 Linux,比如 url_launcher 的 Linux 实现cFw每天发布大量与生活相关的资讯平台

url_launcher 的 Linux 实现 https://github.com/flutter/plugins/tree/master/packages/url_launcher/url_launcher_linux/

部署到 Snap StorecFw每天发布大量与生活相关的资讯平台

要将 Flutter 应用部署到 Snap Store,首先需要安装 Snapcraft。您将使用这一工具将应用构建和发布为 snap:cFw每天发布大量与生活相关的资讯平台

$ sudo snap installsnapcraft --classic

要使用 Snapcraft 工具,您需要在应用的项目目录中创建一个 snapcraft.yaml文件。例如,这是 Flokk 的 snapcraft.yaml文件:cFw每天发布大量与生活相关的资讯平台

name: flokk-contacts version: 1.0.1 summary: Flokk Contacts deion: A fresh and modern Google Contacts manager that integrates withGitHub andTwitter. 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 # app's main entry-point file

现在,在包含 snapcraft.yaml文件的目录中,您可以运行 snapcraft构建应用的 snap。cFw每天发布大量与生活相关的资讯平台

$snapcraft

一切顺利的话,这将在您当前的工作目录中生成一个文件,例如 flokk-contacts_1.0.1_amd64.snapcFw每天发布大量与生活相关的资讯平台

设置好用于在 Snap Store 中发布 snap 的帐号后,即可发布:cFw每天发布大量与生活相关的资讯平台

$ snapcraft login $ snapcraft register flokk-contacts $ snapcraft upload flokk-contacts_1. 0. 1_amd64.snap --release edge

设置账号cFw每天发布大量与生活相关的资讯平台

https://snapcraft.io/docs/creating-your-developer-accountcFw每天发布大量与生活相关的资讯平台

此命令会将应用上传到 Snap Store,并尝试将其发布至 edge 渠道。在应用发布到 edge 渠道后,即可通过 Snap Store 桌面客户端或以下命令行进行安装:cFw每天发布大量与生活相关的资讯平台

$ snap install--edge flokk-contacts

edge 渠道cFw每天发布大量与生活相关的资讯平台

https://snapcraft.io/docs/channels#heading--risk-levelscFw每天发布大量与生活相关的资讯平台

有关从头构建 snap 并将其发布到 Snap Store 的更多详细信息,请参阅指导教程cFw每天发布大量与生活相关的资讯平台

指导教程: 发布首个 snapcFw每天发布大量与生活相关的资讯平台

https://snapcraft.io/first-snap#fluttercFw每天发布大量与生活相关的资讯平台

Flutter Linux 桌面示例cFw每天发布大量与生活相关的资讯平台

Flokk 应用是一个绝佳的 Flutter 实际应用示例。如需更简单的示例,您可以选择 Photo Search应用,此应用也是专为展示桌面功能而构建的。cFw每天发布大量与生活相关的资讯平台

cFw每天发布大量与生活相关的资讯平台

△ 在 Linux 上体验 Photo Search 示例应用cFw每天发布大量与生活相关的资讯平台

Photo SearchcFw每天发布大量与生活相关的资讯平台

https://github.com/flutter/samples/tree/master/experimental/desktop_photo_searchcFw每天发布大量与生活相关的资讯平台

Photo Search 是一款简单的在线照片搜索应用,使用多个插件访问原生平台功能,同时支持 macOS 和 Linux。cFw每天发布大量与生活相关的资讯平台

如需带有逐步说明的示例 Linux 桌面应用,推荐您参考 "编写 Flutter 桌面应用" 这个 codelab,它将指导您使用 OAuth 和 GraphQL 在 Flutter 中构建 GitHub 客户端。cFw每天发布大量与生活相关的资讯平台

cFw每天发布大量与生活相关的资讯平台

△ Flutter GitHub codelab 客户端应用实际效果cFw每天发布大量与生活相关的资讯平台

"编写 Flutter 桌面应用" codelabcFw每天发布大量与生活相关的资讯平台

https://codelabs.flutter-io.cn/codelabs/flutter-github-graphql-client/cFw每天发布大量与生活相关的资讯平台

如果您想深入了解 Flutter 的功能,并体验更多小型程序,我推荐一个更全面的应用: Flutter Gallery,这款应用去年进行了重新设计,以支持桌面和移动设备。如果您想看看它的实际效果,也可以从 Snap Store 下载cFw每天发布大量与生活相关的资讯平台

cFw每天发布大量与生活相关的资讯平台

△ Flutter Gallery 示例可通过 Snap Store 获取cFw每天发布大量与生活相关的资讯平台

Flutter Gallery https://github.com/flutter/gallery 从 Snap Store 上下载 https://snapcraft.io/flutter-gallery

Thorsten Lorenz 制作的多人游戏 batufo则展现出 Flutter 有趣的一面。在这款游戏中,世界各地的玩家在漂亮的场景上展开实时对战。cFw每天发布大量与生活相关的资讯平台

cFw每天发布大量与生活相关的资讯平台

△ 跨多个 Flutter 平台进行实时游戏cFw每天发布大量与生活相关的资讯平台

batufo https://thlorenz.com/batufo/

Thorsten 持续打造这款游戏以支持多个 Flutter 平台,包括 Linux、macOS、Android 和 iOS。如果您想了解他的工作历程以及后续更新,可以观看他的开发视频,并在 GitHub上查看他提供的代码。您可以Snap Store 下载并在 Linux 中安装这个游戏。cFw每天发布大量与生活相关的资讯平台

开发视频cFw每天发布大量与生活相关的资讯平台

https://thlorenz.com/batufo/#watchcFw每天发布大量与生活相关的资讯平台

GitHub: batufocFw每天发布大量与生活相关的资讯平台

https://github.com/thlorenz/batufocFw每天发布大量与生活相关的资讯平台

Snap Store: batufocFw每天发布大量与生活相关的资讯平台

https://snapcraft.io/batufocFw每天发布大量与生活相关的资讯平台

总结cFw每天发布大量与生活相关的资讯平台

通过 Flutter Linux 的 alpha 版本,以及 Google 与 Canonical 之间的紧密合作,Linux 开发者得以使用 Flutter。欢迎大家通过 snap 安装 Flutter SDK,使用 Visual Studio Code 或 Android Studio 在 Linux 上构建和测试您的桌面应用,并将您的应用部署到 Snap Store。如需了解最新详情,请参阅 Flutter 桌面支持。我们期待您提供反馈,以持续帮助 Flutter 在 Linux 以及所有其他支持平台上变得更好。cFw每天发布大量与生活相关的资讯平台

在 Linux 上安装 Flutter https://snapcraft.io/flutter Flutter 桌面支持 http://flutter.cn/desktop 提交反馈 https://github.com/flutter/flutter/issues

我们的梦想是让 Flutter 成为面向所有平台的最佳应用构建方案,借助 Canonical 团队的 Flutter for Linux,我们的梦想向现实迈进了一大步。通过对桌面平台提供支持,使 Flutter 引擎在 Google 无法直接支持的长尾设备上的适应性更强,我们计划不断建立合作关系并持续支持生态系统的成长。cFw每天发布大量与生活相关的资讯平台

在设备需要运行流畅且精美的应用时,就到了 Flutter 大显身手的时候了。cFw每天发布大量与生活相关的资讯平台

鸣谢: Kathy WalrathcFw每天发布大量与生活相关的资讯平台

访问 Flutter 开发者社区中文资源cFw每天发布大量与生活相关的资讯平台

也许你还喜欢

steam图片加载不出来 steam创意工

steam图片加载不出来 解决方法一:检查网络环境 如果您遇到了Steam加载不出图片的问

steam无法添加好友怎么做 steam添

steam无法添加好友怎么做,steam添加好友不符合此功能要求怎么办,steam帐户恢复尝试次数

steamdeck价格是怎样 Steam Deck能

steamdeck价格是怎样,Steam Deck能玩什么游戏,新版steam设置启动项不见了,steam手机版怎

windows7安装教程和操作步骤 win7

windows7安装教程和操作步骤,win7系统版本详细介绍,安装Windows7最低配置要求,如何满足Wi

steam关闭开机自启 steam手机版换

steam关闭开机自启,steam手机版换手机了怎么登录,steam游戏闪退解决方法,steam平台上下载

steam手机版打不开解决方法 steam

steam手机版打不开解决方法,steam客户端打不开商店怎么办,steam打开出错怎么办,steam手机

steam怎么关闭开机自启 Steam新界

steam怎么关闭开机自启,Steam新界面如何设置,steam启动游戏几秒自动关闭,steam游戏自动关

steam为什么不能加好友 steam添加

steam为什么不能加好友,steam添加好友的具体操作方法,steam家庭共享可以一起玩吗,steam游

steam重复次数过多要等多久 怎么解

steam重复次数过多要等多久以及解决办法,steam退款到账时间要多久,steam跳转微信/支付宝

steam怎么改手机号 steam手机令牌

steam怎么改手机号,steam手机令牌怎么移除,steam账号注册规则,steam密码怎么填写,相信大家