谢谢您的订阅!
当新的内容发布后您将开始接收邮件。您也可以点击邮件内的链接随时取消订阅。关闭Close

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桌面示例,请参考英文原文博客

订阅博客文章

订阅您感兴趣的主题

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

查看更多内容

新吉祥物加冕礼:Noble Numbat

无论是通过民众投票、天意还是湖中仙女赐予王者之剑,登上王位的往往是声名显赫或出身高贵的人。在我们 20 周年前夕,很高兴向大家展示 Ubuntu 24.04 LTS 的吉祥物—— Noble Numbat(尊贵的袋食蚁兽)。  低微出身  说到 “尊贵”,人们可能很难首先想到来自澳大利亚的神秘有袋类动物——袋食蚁兽。不过它们的外表非常具有欺骗性。这些不可思议的濒危物种实际上是口袋大小的食蚁兽,它们完全以蚂蚁为食,依靠身体三分之一长的舌头捕捉蚂蚁。它们的背部有着黑白相间的条纹,像极了王袍,因而被选为西澳大利亚州的象征动物。袋食蚁兽象征着出身低微也能享誉世界的人。 至高成就 同样,Ubuntu 也从构建更加人性化的 Linux 这样一个初出茅庐的梦想发展成为一个备受信赖的平台 […]

基于 MicroK8s 和 Ubuntu 实时内核支持的 Intel FlexRAN 组件自动扩展

RAN 随着每一代移动通信技术的发展而不断演变,从而在用户设备和核心网络之间实现更快的数据传输。内部互连设备数量的增多使得数据量比以往任何时候都要多。至于现有的网络架构,其挑战在于处理不断增加的工作负载,以及更快地处理、分析和传输数据的能力。而对于 5G 生态系统,则需要实现 RAN 的虚拟化。第五代移动网络需要具备更大的灵活性以适应需求,具备可扩展性以满足运行时的网络条件,以及需要自动化以进行远程管理,而这些只能通过虚拟 RAN 来实现。  Intel FlexRAN 解决了传统 RAN 架构所面临的挑战。它能够从核心网络功能中将底层硬件抽象化,以实现最佳的资源利用。FlexRAN 是 O-RAN (OpenRAN) 的改进和参考实现,具有在不同供应商设备之间进行互操作 […]

云存储安全最佳实践

使用 Ceph 的安全功能确保数据安全 如何将数据安全地存储在云存储系统中? 数据对于任何企业组织而言如同王冠上的宝石,如果丢失或暴露,可能会造成严重的影响。如果不能防止系统故障,可能会导致业务数据的丢失,从而导致业务无法正常运营,最终导致业务失败。将敏感数据暴露给未授权方不仅会导致声誉受损,还可能导致企业遭受巨额罚款。 本篇博客将详细介绍这些风险,以及如何使用 Ceph 的安全功能来减轻这些风险。首先,我们来了解一下数据泄露发生的一些最常见方式: 实物盗窃/运输 与存储相关的硬件、磁盘或整个存储系统的丢失可能导致敏感信息暴露。这可能发生在传统的入室盗窃情况下,即未经授权的一方进入数据中心并移除硬件,或者硬件在运输过程中(例如在返厂维修或更换时)被他人截获。 另一种实体危 […]