谢谢您的订阅!
当新的内容发布后您将开始接收邮件。您也可以点击邮件内的链接随时取消订阅。关闭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桌面示例,请参考英文原文博客

订阅博客文章

订阅您感兴趣的主题

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

查看更多内容

最新 IDC 研究 — 70% 的 IT 团队每周在安全补丁方面耗费时间超 6 小时

Canonical 与国际数据公司(IDC)开展的最新研究表明,在严苛的 CVE 补丁更新规定下,企业组织难以笃定地应用补丁,并且在开源软件供应链方面也面临着其他严峻挑战。 今日,Ubuntu 发行商 Canonical 发布了一份与 IDC 合作完成并由 Google Cloud 联合赞助的研究报告,其揭示了有关企业组织在安全补丁和不断加重的监管负担方面所面临压力与挑战的全新见解。这份题为《软件供应链现状:安全挑战、机遇以及借助开源软件实现韧性的路径》的报告,对 500 家拥有 250 名以上全职员工的企业组织进行了调查,确定了他们所面临的最紧迫问题。最值得注意的是,这些问题都是企业组织在漏洞和补丁管理、软件依赖关系或软件供应链可视性不足以及软件来源可信度方面面临的难题 […]

Ubuntu 20.04 LTS 标准支持周期终止 — 激活 ESM

ESM 确保设备集群的安全与运行性能 Focal Fossa 的标准支持周期将于 2025 年 5 月终止,也称生命周期终止(EOL)。Ubuntu 20.04 LTS 已然成为全球数百万物联网和嵌入式设备的关键组件,广泛应用于自助服务终端、数字引导牌、工业设备以及机器人系统等设备。该版本是医疗保健到制造业等各行业的企业进行创新的基础。与其他所有迎来标准支持周期终止的 Ubuntu LTS 版本一样,Focal Fossa 将转为扩展安全维护(EOL)模式。本文将为开发者和企业介绍相关选择,并说明如何启用 ESM 以持续获得支持。 在深入探讨之前,我们先来回顾一下 Ubuntu 版本为何存在生命周期终止(EOL)。 Ubuntu 版本为何存在 EOL? 每个 Ubuntu […]

2025 年第一季度芯片技术及设备发展概览

欢迎阅读由 Canonical 首次发布的芯片技术与设备季度发展概览。  在第一季度,边缘人工智能和网络安全领域频频传出重大消息。半导体和软件生态系统领域的各大公司都在着力于在边缘实现更强大、更高能效的人工智能模型,同时增强其安全性,以满足诸如欧洲《网络弹性法案》(CRA)等合规要求。许多政府和行业组织现在也要求汽车系统中必须采取网络安全措施。Canonical 于近期宣布获得 ISO 21434 认证。 在 Canonical,我们亲眼目睹到安全可靠的嵌入式人工智能驱动系统是如何给我们的客户带来显著影响。如今,创新速度加快,为了帮助您及时了解最新的行业趋势,我们精心整理了一份关于芯片技术与设备的最新发展概览。 Arm 发布首款 Armv9 边缘 AI 平台 首先让我们聚 […]