Flutter Alpha用于Linux和桌面开发

我们今天要发布的翻译是由Google的Chris Sells和Canonical的Ken VanDing准备的。



Google一直致力于使Flutter成为一种通用工具,以创建引人入胜的界面,使其在任何平台上都能像这些平台的本机应用程序一样快速地工作。为了确保做到这一点,我们首先将精力集中在Android和iOS等移动平台上。结果,在Google Play上发布了80,000多个快速,美观的Flutter应用程序。







基于我们的成功,一年多来我们一直在忙于将Flutter的功能扩展到台式机平台-macOS,Windows和Linux。这适用于Web应用程序和传统的桌面项目。特别是,我们正忙于引擎的严重重构。重构旨在支持与台式机系统相同样式的鼠标和键盘工作,并支持可调整大小的窗口。这包括适用于桌面平台的新用户界面功能。例如,这支持Material Density和NavigationRail。多亏了Dart:FFI,其中包括与桌面操作系统进行深度集成的实验,并使用系统菜单和标准对话框。所有这些都是为了确保Flutter不仅适合创建移动项目,而且还准备在其基础上开发实际的桌面应用程序。



长期以来,我们一直将Flutter视为创建针对各种平台的项目的工具。在Google,这种愿景的表达是通过Assistant等项目来表示的现在,我们很高兴看到其他公司将Flutter支持扩展到新平台。今天,谷歌和维护世界上最受欢迎的Linux发行版Ubuntu的Canonical高兴地共同宣布发布Flutter Alpha版Linux版。



Linux Flutter?



去年,当Google宣布可以使用Flutter开发桌面应用程序时,Canonical看到了一个诱人的机会来制作Linux发行版,其中包括对Flutter开发人员有吸引力的目标平台Ubuntu。 Flutter在跨平台功能方面正在迅速向前发展。 Canonical希望站在这一运动的最前沿。通过帮助Flutter支持Linux应用程序,Canonical为Flutter应用程序开发人员提供了一种非常简单的机制来将其工作发布到Linux应用程序商店Snap Store。通过使Linux成为正式支持Flutter应用程序的平台,Canonical为开发人员提供了向数百万Linux用户展示其项目并扩大优质项目数量的机会。可供此类用户使用。



Flutter的以下功能和该框架的生态系统似乎对Canonical尤其有吸引力:



  • 一个快速发展的应用程序开发人员社区。
  • 支持多种平台。
  • 开发经过优化的本机应用程序的能力。
  • 现代UI框架共有的功能,例如对声明式,反应式布局小部件的支持。
  • 使用VS Code,Android Studio和IntelliJ的丰富应用程序开发环境。


Google在Flutter上有关桌面开发的原始帖子处理了一个支持macOS应用程序的alpha版本,并计划支持Linux和Windows应用程序。Canonical拥有一支专门的开发团队,在Flutter的开发方面进行了重大投资,该团队与Google的开发人员合作,旨在确保大多数Linux发行版的用户都能享受所有便利的Flutter应用程序。Canonical将继续与Google合作,以进一步改善Linux支持,并将Linux上Flutter应用程序可用的功能保持与其他平台相同的水平。



Flokk App-Flutter证明可用于桌面开发



为了表明Flutter已准备好进行移动开发,我们与gskinner的设计师和开发人员合作,创建了一种创新且引人入胜的Flutter桌面应用程序。这是Flokk-一个处理真实数据的真实应用程序。特别是-带有Google通讯录中的联系人列表。是Flokk的视频演示。



此应用程序允许您管理联系人。特别是-搜索联系人,添加新联系人并编辑现有联系人。 Flokk还允许您与联系人关联适当的Twitter和GitHub帐户,并使用这些帐户中的数据。





Flokk Contacts是在Flutter上为台式机构建的。



该应用程序可以显示来自Twitter和GitHub的通知,这一事实将其转变为用户的个人社交网络。如果您感兴趣的社交网络尚未与Flokk集成,则可以通过将相应的PR发送到项目存储库中来解决此问题,因为Flokk是完全开源的项目



除了为用户交互提供创新思路外,Flokk还使用Flutter的功能来创建有吸引力且用户友好的界面。下图显示了这种可能性的一个示例。此处显示,当切换到应用程序的深色主题时,执行的不是简单的而是动态的颜色更改。



图片


Flutter的功能使Flokk可以提供流畅的动画,高性能的滚动以及易于使用的主题



Flokk背后创意团队由Grant Skinner领导他以出色的设计解决方案和创新的UX理念而闻名。格兰特(Grant)关于在Linux上使用Flutter的看法是这样的:“开发Flokk Contacts应用程序原来是一项非常简单的任务!我们能够在这里应用我们所有的Flutter开发经验,并且无需诉诸任何特殊技巧就可以创建针对Linux的应用程序。该应用程序非常好。我们非常喜欢与Canonical团队合作。他们对我们的业务充满热情和热情,他们希望不仅考虑Linux,而且考虑所有其他平台,从而使Flutter更好。这是一个伟大的项目,我非常喜欢为其他桌面操作系统开发Flutter应用程序的前景。”



如果您想在Linux机器上使用Flokk,则可以从GitHub下载该应用程序的最新版本如果使用snapd,则可以从Snap Store下载Flokk



在Linux上安装Flutter



既然您已经了解了可以使用Flutter创建的高质量桌面应用程序,特别是Linux应用程序,那么您可能想在自己的Linux机器上尝试Flutter。为了尽可能简化为开发Flutter应用程序准备Linux系统的过程,我们很高兴地宣布Flutter SDK for Linux作为Snap软件包在Snap Store中提供。...该软件包包含使用您喜欢的Linux发行版开发Flutter应用程序所需的一切。话虽如此,您无需安装一整套开发依赖项。您需要做的就是安装您选择的Flutter SDK和IDE snap软件包。然后,您拥有创建,构建和发布自己的Linux应用程序所需的一切。



例如,如果您要开始在Linux上开发Flutter应用程序,并且喜欢Visual Studio Code,则需要在终端中运行以下命令集:



$ snap install --classic flutter
$ snap install --classic code
$ code --install-extension dart-code.flutter


如果要在Linux上创建桌面和移动应用程序,可以通过安装Android SDK或Android Studio(此处已包含Android SDK)进行准备。您可以在此处找到有关Flutter SDK snap的详细信息



Linux桌面应用程序开发



在Linux计算机上安装Flutter SDK之后,您需要转到某个频道devmaster更新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 Counter应用程序在Linux上



也能很好地工作,您将拥有一个使用Flutter构建的全新Linux应用程序,并在最新的稳定版GTK +上运行。如果您已经有想要支持Linux的Flutter项目,并且已经在此类项目中启用Linux支持之后执行了此操作,则可以将目录linux自己添加到项目中



$ cd my_flutter_app
$ flutter create .


这将创建一个带有特殊项目的子目录,该子目录是在Linux桌面上构建和运行Flutter应用程序所需要的。



安排从Flutter访问本机Linux代码



除了通过编写Dart代码以创建Flutter小部件来支持桌面应用程序之外,您的Linux桌面应用程序还可以使用平台通道C / C ++的外来功能接口(FFI)访问本机Linux功能。...或者,如果愿意,可以重用可以在pub.dev中找到的现有代码。,在Dart和Flutter的软件包管理器网站上。在pub.dev上找到的大多数软件包都是用纯Dart编写的,这些软件包中的大多数在Linux应用程序中都可以正常工作。一些称为插件的软件包包含针对特定平台的本机代码。作为此发行版的一部分,我们在pub.dev上发布了三个使用本机Linux功能的插件:



  • url_launcher:在默认浏览器中打开URL。
  • shared_preferences:在应用程序的各种会话中使用的用户首选项。
  • path_provider:与特定目录相关的路径信息,例如上载目录,图像等。


您可以在应用程序中使用这些插件中的每一个,但它们也可以作为示例说明如何使用Flutter代码中的本机Linux功能。例如,这是url_launcher插件实现源代码。



将应用程序发布到Snap Store



要将Flutter应用发布到Snap Store,首先需要安装Snapcraft,该工具用于构建和发布应用作为snap软件包:



$ sudo snap install snapcraft --classic


要利用Snapcraft的功能,您需要在应用程序的项目目录中创建一个文件snapcraft.yaml例如,Flokk的文件如下所示:



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 # ,      


现在,在带有文件的目录中,snapcraft.yaml您可以运行Snapcraft来创建应用程序快照包:



$ snapcraft


如果一切正常,此命令将在当前工作目录中创建一个文件。它将被称为这样:



flokk-contacts_1.0.1_amd64.snap


准备好将应用程序发布到Snap Store的帐户,可以发布刚创建的快照:



$ snapcraft login
$ snapcraft register flokk-contacts
$ snapcraft upload flokk-contacts_1.0.1_amd64.snap --release edge


在这里,我们将应用程序上载到Snap Store并尝试将其发布到边缘feed将应用程序发布到此频道后,您可以通过Snap Store桌面客户端或使用命令行进行安装:



$ snap install --edge flokk-contacts


有关如何创建第一个应用程序并将其发布到Snap Store的详细信息,请参见此处



Flutter桌面应用程序的示例



Flokk应用程序是Linux桌面现实项目的一个很好的例子。作为一个简单的示例,请查看“照片搜索”应用程序它是专门为演示Flutter开发桌面应用程序的功能而创建的。





照片搜索应用程序



这是一个简单的在线照片搜索应用程序,它使用多个插件来访问其支持的平台(包括macOS和Linux)的本机功能。



如果您需要有关如何开发Linux桌面应用程序的逐步说明,请查看此代码实验室教程。它着重于使用OAuth和GraphQL使用Flutter构建GitHub客户端。





GitHub客户端



如果您想探索一个更复杂的项目,该项目使用了Flutter的更多功能,并且提供了一些有趣的代码示例,那么您可以看看Flutter Gallery应用程序。去年重做了。除了移动平台,它现在还支持桌面平台。如果要查看此应用程序的运行情况,可以从Snap Store下载它





可以从Snap Store下载Flutter Gallery App。



这是另一个说明Flutter娱乐功能的桌面应用程序。这是由Thorsten Lorenz创建的多人batufo游戏。这款精美的游戏可以让来自世界各地的玩家实时相互竞争。





在Flutter



Thorsten支持的不同平台上运行的Batufo游戏创建了该游戏,并支持各种平台,包括Linux,macOS,Android和iOS。如果您有兴趣了解这款游戏的开发方式,并且希望观看该项目的发展,则可以观看这些视频并查看项目存储库在Linux上,可以从Snap Store安装该游戏



结果



随着Flutter for Linux的Alpha版本的发布,以及Google和Canonical之间的紧密合作,Linux开发人员现在可以使用Flutter的功能来创建适合其操作系统的应用程序。您所需要做的就是安装Flutter SDK snap,使用VS Code或Android Studio生成和测试应用程序,然后将其发布到Snap Store。有关使用Flutter进行桌面开发的新闻,请参见此处。而且,这对我们来说非常非常重要,请尝试进行评论关于Flutter的新功能。这将帮助我们使Linux对Flutter应用程序的支持尽可能地好。事实上,我们努力通过与其他平台合作来实现相同目标。



Canonical开发团队的Linux Flutter向前迈出了一大步,朝着使Flutter成为所有平台的最终应用程序开发框架的梦想又迈进了一步。现在可以为台式机开发Flutter应用程序这一事实使Flutter引擎更易于为各种设备使用。尽管Google无法直接支持这些设备,但该公司计划继续与其他公司建立合作伙伴关系,并开发Flutter生态系统。



我们希望在需要快速且吸引人的应用程序的所有设备上看到Flutter。



您是否尝试过为Linux构建Flutter应用程序?






All Articles