Canonical通过Flutter启用Linux桌面应用程序(推荐)

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本机功能的插件:

您可以在应用程序中使用这些插件中的每个插件,并作为如何从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-contacts
version: 1.0.1
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 # 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-snap 以获取指导教程。

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成为的地方。

到此这篇关于Canonical通过Flutter启用Linux桌面应用程序的文章就介绍到这了,更多相关Flutter启用Linux桌面应用程序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Linux中使用Crontab定时监测维护Tomcat应用程序的方法

    监测的应用接口: 新闻接口.天气接口 处理方法:应用接口不可用时自动重启Tomcat,并发送告警邮件给相关人员 #!/bin/bash #--------------------------------------------------------- # 功能说明: # 监控指定HTTP服务是否可用,如果不可用立即重启Tomcat # # 使用说明: # 1. 将此脚本放置在/home/opentsp/crontab/目录下. # 2. 修改脚本执行权下为可执行权限. # 3. 添加到定时任务

  • 在Linux操作系统上运行Windows应用程序

    大多使用Linux的人都对WINE程序比较熟悉,WINE程序是可以在不需要Windows的情况下使用Windows的软件.WINE还是算比较成熟的,但是WINE只能运行部分程序,还有一些程序在运行的时候会出现一些问题. 除了WINE,还有一些其它的软件可以帮助你运行一些特殊的程序.例如,CodeWeaver 公司的CrossOver办公软件,它可以让你在Linux下运行Windows下的一些商业软件(如微软的OFFICE,Quicken等等).TransGaming 公司的WineX可以让你在L

  • Linux上也有10个流行的Windows应用程序

    据数据分析公司Net Market Share声称,Linux桌面操作系统的使用率已达到了2%.对这款开源操作系统来说,这可是前所未有的成就. 这个数字并没有把安卓算作Linux.这表明,更多的用户扎堆涌向传统的Linux桌面. 回顾过去,2018 年是 Linux 社区的好年景.许多仅在 Windows 和/或 Mac上 有的程序可在 Linux 平台上使用了,而且不用麻烦.向 Snap 和 Flatpak 技术致敬,这些技术已经为 Linux 用户带来了许多"受限制"的程序. 今天

  • 嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws)

    应用软件一般都有这样的业务需求: 当有新版本的APP,则程序就需要执行更新,更新完毕后(所谓的更新大多就是以覆盖的方式),不需要关机,而是应用程序自己重新启动即可. 查了网上一些资料,描写得非常复杂,还不如创建一个脚本,批处理完成我的工作这样简单.快捷和粗暴. 在程序中,可以通过QT的线程库函数来重启,也可以简单的调用外部脚本,完成重启的工作. qApp->closeAllWindows(); system("/opt/app/restart_app.sh"); 这里看到,res

  • 详解Win10 Bash/WSL调试Linux环境下的.NET Core应用程序

    一.简介 使用过Mac OS的程序员都知道,在Mac Book Pro上写程序是一件比较爽的事儿,作为dotneter,我们都比较羡慕Mac系统的环境,比如命令行,当然设备也是挺漂亮的. 在新的Win10系统中微软给我们提供了一个基于Ubuntu的Linux子系统(Bash/WSL).要全用Bash/WSL也比较简单,首先要先打开开发者模式( 设置 → 更新和安全 → 针对开发人员 → 开发人员模式), 然后在控制面板 → 程序 → 启用Windows功能 → Windows Subsystem

  • Canonical通过Flutter启用Linux桌面应用程序(推荐)

    Google 对 Flutter 的目标一直是提供一个可移植的工具包,以构建媲美本机速度运行的精美UI,无论您使用的是哪个平台.为了验证该功能,我们首先关注于Android和iOS移动平台,我们已经在Google Play上看到了8万多个快速,精美的Flutter应用程序. 为了获得成功,一年多来,我们一直将重点扩展到包括桌面级体验,包括针对Web和桌面操作系统(macOS,Windows和Linux)的体验.这项工作包括对引擎进行广泛的重构,以支持桌面样式的鼠标和键盘输入,以及可调整大小的顶级

  • 如何为 Linux 桌面配置 Openbox(推荐)

    本文是 24 天 Linux 桌面特别系列的一部分.Openbox 窗口管理器占用很小的系统资源.易于配置.使用愉快. 你可能不知道你使用过 Openbox 桌面:尽管 Openbox 本身是一个出色的窗口管理器,但它还是 LXDE 和 LXQT 等桌面环境的窗口管理器"引擎",它甚至可以管理 KDE 和 GNOME.除了作为多个桌面的基础之外,Openbox 可以说是最简单的窗口管理器之一,可以为那些不想学习那么多配置选项的人配置.通过使用基于菜单的 obconf 的配置应用,可以像

  • 零基础入门篇之Linux及Arm-Linux程序开发笔记

    前言:本文记录了自己从一个完全不懂Linux的人如何一步步学会Linux程序开发的过程.当然也希望本文能够达到它的目的,让那些和我一样没有任何基础的人也能快速入门Linux程序开发. 一.Arm-Linux程序开发平台简要介绍 Arm-Linux程序的开发并不像我们以前接触的Windows程序开发那样,关于平台的搭建就繁琐很多,所以在正式进入程序开发之前先对这种开发模式进行简要介绍,让一个即使没有任何Linux开发经验的程序员也能够看懂后面的内容. 1.1程序开发所需系统及开发语言 开发arm-

  • 共创Linux桌面系统co-create 1.0.3光盘安装过程详细图解.htm

    前提∶你的光盘能直接启动,推荐使用光盘启动安装. 一.准备工作:    1.安装前记下每个分区的大小,便于选择分区时核对,以免操作错误,丢失有用数据.    2.准备共创Linux桌面系统co-create 1.0.3安装光盘一张.BABY-i386-disc.iso官方免费下载地址为∶       ftp://ftp.opendesktop.net/1.0.3/BABY-i386-disc.iso  大小685M            MD5:632e3543e5eb73206138c7545

  • 在 Ubuntu Linux 桌面上安装 spotify在线听音乐的步骤

    如何在 Ubuntu Linux 桌面上安装 spotify 来在线听音乐? Spotify 是一个可让你访问大量歌曲的数字音乐流服务.你可以免费收听或者购买订阅,可以创建播放列表.订阅用户可以免广告收听音乐,你会得到更好的音质.本教程展示如何使用在 Ubuntu.Mint.Debian.Fedora.Arch 和其他更多发行版上的 snap 包管理器安装 Spotify. 在 Linux 上安装 spotify 在 Linux 上安装 spotify 的步骤如下: 安装 snapd 打开 sn

  • python基于Kivy写一个图形桌面时钟程序

    Kivy 是一个开源的 Python 第三方库,可以用来快速开发应用程序. 它有如下三个特点: 跨平台 Kivy 编写的程序可在 Linux,Windows,OS X,Android,iOS 和 Raspberry Pi 上运行. 商业友好 Kivy 基于 MIT 许可证进行开源,可以进行免费的商业使用. GPU 加速 Kivy 的图像引擎基于 Open ES 2 构建,性能出众. 除此之外 Kivy 也存在一些缺点,比如: 非原生的图形界面: 打包后的体积很大: 缺乏社区支持: 缺乏足够的示例

  • LINUX下PHP程序实现WORD文件转化为PDF文件的方法

    本文实例讲述了LINUX下PHP程序实现WORD文件转化为PDF文件的方法.分享给大家供大家参考,具体如下: <?php set_time_limit(0); function MakePropertyValue($name,$value,$osm){ $oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue"); $oStruct->Name = $name; $oStruct->V

  • 使用jQuery的将桌面应用程序引入浏览器

    随着 RIA 的广泛使用,将越来越多地使用 JavaScript 库协助开发.RIA 被定义(松散地)为通过浏览器运行的应用程序,这种浏览器结合使用 CSS/JavaScript/Ajax 创建类似桌面应用程序的外观.Firefox.Internet Explorer 和 Safari 最新发行版中新增的特性,以及 Google 新 Chrome 浏览器最近的版本,都专注于加快每个浏览器的内部 JavaScript 引擎的速度,其惟一目的是更加适应浏览器制造商为未来设计的 RIA.这些公司认为未

  • linux中误删除程序包恢复实例

    本文主要是介绍linux中误删除程序包恢复实例,小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧. 以CentOS-7.2为例: 删除kernel包,无法重启: 1.删除kernel包 2.重启,无法启动 3.再次重启,出现进度条时按下Esc键,出现如下界面,选择从光盘启动 4.进入如下界面,选择Troubleshooting 5.选择救援模式,Rescue a CentOS system 6.键入回车 7.选择Continue ,键入1,进入 8.回车进入shell

  • 总结UNIX/LINUX下C++程序计时的方法

    前言 良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较.但要精确测量程序的运行时间并不容易,因为进程切换.中断.共享的多用户.网络流量.高速缓存访问及转移预测等因素都会对程序计时产生影响. 下面看看小编为大家整理几个计时方法 方法一: 如果是想统计某个程序的运行时间,那么可以使用 time ./a.out 方法二: 如果是想对某个函数或者语句进行计时,那么有别的方法.比如说,gettimeofday函数.直接贴示例代码: #include <sys/time.h> v

随机推荐