Canonical经过Flutter启用Linux桌面应用程序支持

子标题:Ubuntu团队为全部Linux发行版上的Flutter应用程序制做了一个新的基于GTK +的主机。linux

此文翻译自:https://medium.com/flutter/announcing-flutter-linux-alpha-with-canonical-19eb824590a9git

做者:克里斯·塞尔斯(Chris Sells)(Google)和肯·范丁(Ken VanDine)(Canonical)github

Google 对 Flutter 的目标一直是提供一个可移植的工具包,以构建媲美本机速度运行的精美UI,不管您使用的是哪一个平台。为了验证该功能,咱们首先关注于Android和iOS移动平台,咱们已经在Google Play上看到了8万多个快速,精美的Flutter应用程序。web

为了得到成功,一年多来,咱们一直将重点扩展到包括桌面级体验,包括针对Web和桌面操做系统(macOS,Windows和Linux)的体验。这项工做包括对引擎进行普遍的重构,以支持桌面样式的鼠标和键盘输入,以及可调整大小的顶级窗口。它还包括新的UI功能,能够很好地适应桌面,例如Material Density支持和NavigationRail,还能够经过Dart:FFI中的实验与基础桌面OS进行深度集成,并能够访问系统菜单栏和标准对话框。全部这些工做是为了确保除了适合移动样式的体验以外,Flutter还准备处理功能齐全的全尺寸桌面应用程序。小程序

为Flutter平台提供动力是咱们长期的愿景。咱们已经在Google上看到了带有Assistant等产品的清单,因此如今咱们很高兴看到其余人利用Flutter来支持更多平台。今天,咱们很高兴与全球最流行的台式机Linux发行版Ubuntu的发行商Canonical共同宣布Flutter的Linux alpha版本。浏览器

为何要在Linux上使用Flutter?

去年,当Google宣布对Flutter提供桌面级应用程序支持时,Canonical看到了一个使人振奋的机会来进行Linux发行,包括Ubuntu,这是Flutter应用程序开发人员的有吸引力的目标平台。 Flutter的原生跨平台故事正在迅速发展,Canonical但愿成为先锋。经过在Flutter中启用桌面Linux支持,Canonical使得应用程序开发人员能够很是轻松地经过Snap Store(Linux应用程序商店)为Linux用户发布他们的应用程序。经过使Linux成为一流的Flutter平台,Canonical邀请应用程序开发人员将其应用程序发布给数百万Linux用户,并扩大可供他们使用的高质量应用程序的可用性。微信

有关Flutter的许多事情对于Canonical来讲是使人兴奋的:网络

  • 快速发展的应用程序开发人员生态系统
  • 多平台支持
  • 高度优化的本机应用程序
  • 现代的UI框架,支持声明式,反应式和可组合的小部件
  • 使用Visual Studio Code,Android Studio和IntelliJ的丰富开发平台

Google最初宣布的Flutter桌面支持宣布是从支持macOS的Alpha版本以及针对Linux和Windows的计划开始的。Canonical 经过组建一支开发人员团队与Google的开发人员合做,将Flutter的最佳体验带给大多数Linux发行版,从而对Flutter进行了重大投资。 Canonical将继续与Google合做,以进一步改善Linux支持并保持与其余受支持平台的功能对等。app

Flokk:证实Flutter已为台式机作好准备

为了证实Flutter已为台式机作好了准备,咱们与gskinner的设计师和开发人员合做,建立了创新的,精美的Flutter台式机应用程序。 Flokk是一个真实世界的应用程序,可处理真实世界的数据,尤为是您的Google联系人列表。框架

此视频地址:www.youtube.com/watch?time_…

除了可以管理您的联系人(包括搜索联系人,添加新联系人和编辑现有联系人)以外,Flokk还使您能够将GitHub和Twitter处理与您的联系人信息。

GitHub和Twitter通知的显示将您的联系人变成您本身的我的社交网络。并且,若是您在Flokk Contacts中没有看到您喜欢的社交网络,那么好消息是Flokk是彻底开源的,所以您能够提交PR来添加您喜欢的。

除了在社交空间中进行创新外,Flokk还使用Flutter功能使外观看起来很棒。仅做为一个示例,深色主题不只能够切换颜色,还能够对更改进行动画处理。

Flokk Contacts应用程序背后的创意团队由Grant Skinner领导,他以出色的设计和实施创新的用户体验而闻名。 Grant曾说过关于在Linux上使用Flutter:

“构建Flokk Contacts应用程序很是容易!咱们几乎无需进行任何调整就能够将咱们在Flutter上的全部专业知识应用于目标Linux,而且该应用程序运行出色。与Canonical团队合做是一次很棒的经历。他们热心,投入并热衷于使Flutter不只针对Linux,并且针对每一个平台都变得更好。这是一个了不得的项目,我很高兴可以使用Flutter定位另外一个主要的操做系统。” —Grant Skinner

若是您想在Linux机器上使用Flokk应用,则能够在GitHub上下载最新版本。或者,若是您正在快速运行,则能够从Snap Store下载Flokk应用。

在Linux上轻松安装Flutter

如今,您已经了解了Flutter在桌面类应用程序(尤为是Linux)上的运行状况,您将但愿使其在本身的Linux机器上运行。为使操做尽量简单,咱们很高兴在Snap Store中提供Linux版Flutter SDK。 Flutter SDK快照提供了在您喜欢的Linux发行版上开发Flutter应用程序所需的一切。无需安装大量开发依赖项;只需安装Flutter SDK快照和您最喜欢的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

适用于Linux桌面的Flutter

在Linux机器上安装Flutter SDK以后,要构建桌面应用程序,您须要升级到Flutter开发人员或主渠道。而后启用Linux桌面支持:

$ flutter channel dev
$ flutter upgrade $ flutter config --enable-linux-desktop 复制代码

如今,当您建立一个新的Flutter项目时,您将得到一个linux子目录,该目录可以让您在Linux桌面上运行该应用程序:

$ flutter create counter
$ cd counter $ flutter run -d linux 复制代码

您将得到一个运行在Flutter上且运行于最新稳定版本GTK +上的闪亮的Linux新应用程序。若是您有一个现有的Flutter项目,而且但愿在启用Linux以后向其添加Linux支持,则能够添加linux子目录,以下所示:

$ cd my_flutter_app
$ flutter create . 复制代码

这将使用须要在Linux桌面上构建和运行Flutter应用程序的Runner项目建立linux子目录。

从Flutter访问Linux中的本机代码

除了经过编写Dart来建立Flutter小部件来支持桌面以外,您的Linux桌面应用还可使用平台渠道或C / C ++的Dart外部功能接口访问全部本机Linux。或者,若是您想重复使用现有代码,则能够在pub.dev,Dart和Flutter的程序包管理器网站上找到该代码。在pub.dev上能够找到的大多数软件包都是纯Dart的,大多数均可以在Linux应用程序中正常工做。有些软件包(称为插件)中包含特定于一个或多个平台的本机代码。做为此版本的一部分,咱们在pub.dev上发布了三个使用Linux本机功能的插件:

您能够在应用程序中使用这些插件中的每一个插件,并做为如何从Flutter代码本地访问Linux的示例,例如 Linux implementation of url_launcher

部署到 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 # app's main entry-point file 复制代码

如今,在带有snapcraft.yaml文件的目录中,您能够运行snapcraft来构建应用程序的快照。

$ snapcraft
复制代码

若是一切顺利,这将在您当前的工做目录中生成一个文件,例如flokk-contacts_1.0.1_amd64.snap。

设置好要在Snap Store中发布的账户后,便可发布snap:

$ snapcraft login
$ snapcraft register flokk-contacts $ snapcraft upload flokk-contacts_1.0.1_amd64.snap --release edge 复制代码

此命令会将应用程序上载到Snap Store,并尝试将其发布到边缘通道。在边缘通道中发布应用程序后,能够经过Snap Store Desktop客户端或使用命令行来安装它:

$ snap install --edge flokk-contacts
复制代码

有关构建第一个快照并将其发布在Snap Store中的更多详细信息,请参阅 https://snapcraft.io/first-snap#flutter 以获取指导教程。

Flutter Linux桌面案例

Flokk应用程序是针对Linux桌面的真实Flutter应用程序的绝佳示例。对于更简单的示例,您能够查看照片搜索应用程序,该应用程序还专门用于展现桌面功能。

Photo Search是一个简单的在线照片搜索应用程序,它使用多个插件来访问本机平台功能,同时支持macOS和Linux。

对于带有分步说明的示例Linux桌面应用程序,我建议编写Write Flutter桌面应用程序代码实验室,该教程将指导您使用OAuth和GraphQL在Flutter中构建GitHub客户端。

对于一个功能更全面的应用程序,该应用程序可使用Flutter的更多表面积并提供几个小程序,我推荐Flutter Gallery,该软件去年进行了从新设计,以支持台式机和移动设备。若是您但愿看到它的实际效果,也能够在Snap Store中查看。

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平台作最好的Flutter。

来自Canonical团队的Linux Flutter,对于咱们的梦想是向前迈出了一大步,不管您将目标对准哪一个平台,Flutter都是构建应用程序的最佳方法。针对台式机的定位使得Flutter引擎更加适应Google自己没法直接支持的长尾设备,但咱们计划为此继续创建合做伙伴关系并实现生态系统。

不管哪里的设备都须要快速,精美的应用程序,这就是咱们但愿Flutter成为的地方。

交流

老孟Flutter博客地址(330个控件用法):laomengit.com

欢迎加入Flutter交流群(微信:laomengit)、关注公众号【老孟Flutter】:

相关文章
相关标签/搜索