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

  1. 博客
  2. 文章

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


查看更多内容

Canonical Managed Kubeflow AI 运维平台现已登陆 Microsoft Azure Marketplace

Ubuntu 发行商 Canonical 近日宣布,其 Managed Kubeflow 服务已在 Microsoft Azure Marketplace 正式上线,实现全面商用(GA)。该解决方案允许 AI 团队在自有云租户环境内获得一个完全托管、可直接投入生产的 MLOps 平台。 上游 Kubeflow...

全新工具 Workshop 上线:一条命令即可在 Ubuntu 中启动沙箱开发环境

开发者如今可在智能体 AI 等前沿工作流程中,获得环境统一、可复现的开发体验 Canonical 正式发布 Workshop,该解决方案可通过单条命令快速启动开发环境。只需配置一次,此开发环境即可在多台设备上复现使用。这意味着各类开发设备与部署流水线可保持统一工作流程,并可大幅减少管理依赖关系所花费的时间。...

Canonical 技术案例 – 彻底解决 12 年老旧代码中的 Linux 性能漏洞

部分支持案例处理起来十分简单。另一些案例则要深入老旧遗留代码,一处逻辑缺陷就能悄无声息让常规指令引发严重性能故障。本系列将介绍 Canonical 技术支持与持续工程团队如何协作,排查、修复并向上游提交仅靠常规故障排查无法解决的疑难问题。在第二篇帖子中,libnss-db 中一处存在 12 年之久的漏洞导致 getent...

借助全新 NVIDIA OpenShell Snap,在 Ubuntu 上安全管控 AI 智能体工作流

NVIDIA 发布经过验证的 OpenShell Snap 软件包,用于在 Ubuntu 上安全管控 AI 智能体工作流 Canonical 在 COMPUTEX 宣布与 NVIDIA 达成全新合作,将面向智能体的 NVIDIA OpenShell 运行时直接集成至 Ubuntu 生态系统。Canonical 将 OpenShell 封装为 Snap...