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

此文翻译自:https://medium.com/flutter/an...

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

Google 对 Flutter 的指标始终是提供一个可移植的工具包,以构建媲美本机速度运行的精美UI,无论您应用的是哪个平台。为了验证该性能,咱们首先关注于Android和iOS挪动平台,咱们曾经在Google Play上看到了8万多个疾速,精美的Flutter应用程序。

为了获得成功,一年多来,咱们始终将重点扩大到包含桌面级体验,包含针对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反对并放弃与其余受反对平台的性能对等。

Flokk:证实Flutter已为台式机做好筹备

为了证实Flutter已为台式机做好了筹备,咱们与gskinner的设计师和开发人员单干,创立了翻新的,精美的Flutter台式机应用程序。 Flokk是一个真实世界的应用程序,可解决真实世界的数据,尤其是您的Google联系人列表。

此视频地址:https://www.youtube.com/watch?time_continue=120&v=cTFJcq7UTRY&feature=emb_logo

除了可能治理您的联系人(包含搜寻联系人,增加新联系人和编辑现有联系人)之外,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本机性能的插件:

  • url_launcher: 在提供的URL上启动默认浏览器
  • shared_preferences: 利用会话之间共享的用户首选项
  • path_provider: 无关专用目录的门路信息,例如下载,图片等

您能够在应用程序中应用这些插件中的每个插件,并作为如何从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-contactsversion: 1.0.1summary: Flokk Contactsdescription: A fresh and modern Google Contacts manager that integrates with GitHub and Twitter.confinement: strictbase: core18grade: stableapps:  flokk-contacts:    command: flokk-contacts    extensions: [flutter-master]    plugs:    - networkparts:  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-sn... 以获取领导教程。

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个控件用法):http://laomengit.com

欢送退出Flutter交换群(微信:laomengit)、关注公众号【老孟Flutter】: