Canonical通过Flutter支持Linux桌面应用

by liam zheng on 10 July 2020

本文由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中的实验与底层桌面操作系统深度集成的实验,并可以访问系统菜单栏和标准对话框。所有这些工作是为了确保除了适合移动样式的体验外,Flutter已具备处理功能齐全的全尺寸桌面应用程序。

我们对Flutter的长期愿景是使其为平台提供动力。我们已经在Google上看到了诸如Assistant之类产品的清单,所以现在我们很高兴看到其他人利用Flutter为更多平台提供支持。今天,我们很高兴与全球最流行的Linux桌面发行版Ubuntu的发行商Canonical共同宣布Flutter的Linux alpha版本。

为什么要在Linux上使用Flutter?

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

Flutter有很多让Canonical振奋的事情:

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

Google最初的公告是为macOS的Alpha版本支持,计划对Linux和Windows提供支持。Canonical正在对Flutter进行一项重要的投资,例如通过组建一支开发人员团队与Google的开发人员合作,为大多数Linux发行版带来最好的Flutter体验。Canonical将继续与Google合作,以进一步改善对Linux的支持并保持与其他受支持平台的功能对等。

Flokk: 证明Flutter为桌面系统已准备就绪

为了证明Flutter已为桌面系统做好了准备,我们与gskinner.com的设计师和开发人员合作,创建了一款创新,美观的Flutter桌面系统应用程序:

视频地址

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

GitHub和Twitter通知的显示将您的联系人变成您自己的个人社交网络。 而且,如果您在Flokk Contacts中没有看到自己喜欢的社交网络,您可以提交PR来添加您喜欢的,因为Flokk是完全开源的。

除了在社交空间中进行创新外,Flokk还使用Flutter功能使外观看起来很棒。仅作为一个示例,深色主题不仅是颜色的切换,还能应用过渡动画。

如果您想要使用Flokk应用,可以到Github下载最新的版本。如果您正在使用snapd,那么你可以从Snap应用商店进行下载。

在Linux上安装Flutter

现在,您已经了解了Flutter在桌面类应用程序(尤其是Linux)上的运行情况,您将可使其在自己的Linux机器上运行。为使操作尽可能简单,我们很高兴在Snap应用商店中提供Linux版Flutter SDK。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

适用于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应用的流道项目一起创建一个Linux子文件夹。

部署到Snap应用商店

要部署您的Flutter应用到Snap应用商店,您需要先安装Snapcraft,它可让您以snap应用包的形式创建和发布应用。

$ sudo snap install snapcraft --classic

要使用Snapcraft,您需要在您的应用项目文件夹中创建一个snapcraft.yaml文件。以Flokk snap为例:

name: flokk-contacts
version: 1.0.0
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 # The main entry-point file of the application

现在,您可以运行snapcraft来构建snap版的应用。

$ snapcraft

如果一切顺利,这个步骤将会在当前的目录下生成一个名为“flokk-contacts_1.0.0_amd64.snap”的文件。

当您完成账户创建后,您可以将此应用发布到Snap应用商店:

$ snapcraft login
$ snapcraft register flokk-contacts #(registers the snap name in the store, these must be unique)
$ snapcraft upload flokk-contacts_1.0.0_amd64.snap --release edge 

上述命令将会把它上传到Snap应用商店,然后发布到edge通道。应用发布后,可通过桌面商店客户端,或者命令行进行安装:

$ snap install --edge flokk-contacts

更多关于Snap构建和发布的内容,请参考我们的教程:https://snapcraft.io/first-snap#flutter

其他Flutter Linux桌面示例,请参考英文原文博客

订阅博客文章

选择您感兴趣的主题

在提交此表格的同时,我确认已阅读和同意的隐私声明隐私政策。

查看更多内容

信息图:“Ubuntu: 从2004到20.04 LTS”

Ubuntu 20.04.1 LTS 今天已发布,为了庆祝新的子版本发布,我们想要展示Ubuntu自2004年第一个版本发布至今的进化史。在此感谢社区和我们用户的贡献和与我们的成长。 现在就升级到Ubuntu 20.40.1 LTS吧! […]

研华发布预装Ubuntu 18.04 LTS且适用于机器视觉应用的EPC-C301

研华是全球领先的智能物联网系统和嵌入式平台的领导者,现很高兴地发布由Intel 8代处理器驱动的紧凑无风扇设计PC EPC-C301。该系统具有多种以域为中心的I / O,可在较宽的温度范围内运行。EPC-C301整合了Intel和Canonical的技术以提供Ubuntu和OpenVINO工具套件,旨在加速AIoT的前进。这个强大的系统对例如自动光学检查(AOI)和自动车牌号识别(APNR)等机器视觉应用来说是一个非常优秀的选择。 支持嵌入式软件 EPC-C301预装了Ubuntu 18.04 LTS镜像和iManager软件API。“通过对研华 EPC-C301和Ubuntu 18.04 LTS的认证,Canonical承诺10年的软件更新支持为企业的工业自动化和机器 […]