NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Flutter 全平台制霸再进一步:实现 Linux 桌面应用支持

  • 2020-07-13
  • 本文字数:2562 字

    阅读完需:约 8 分钟

Flutter全平台制霸再进一步:实现Linux桌面应用支持

Flutter 的“野心”不止于跨平台开发,而是全平台制霸:iOS、Android、Web、Linux 我全都要!

Flutter:走向全平台制霸

Flutter 作为谷歌出品的移动 UI 框架,在快速构建 iOS 和 Android 应用及开发、高性能、可移植性上表现优秀,并可以与现有代码一起工作,基于这些特点使其越来越受到开发者的推崇。近几年来我们也看到了越来越多国内外基于 Flutter 开发的最佳实践,目前 Google Play 上也已经涌现了超过 8 万个用 Flutter 实现的兼具快速与精美特点的应用程序。


谷歌此前给 Flutter 的目标一致都是提供一个可移植的框架,从而在各种平台上都能构建以原生速度运行的精美 UI。这意味着在谷歌眼里,iOS 和 Android 应用的跨平台开发不是 Flutter 的终极,它的野心是做一个制霸全平台开发的主流框架。iOS 和 Android 只是开始,远非结束。


过去一年多时间,谷歌团队一直在将 Flutter 跨平台开发的支持扩展到桌面端上,包括 Web、macOS、Windows 和 Linux 几大平台。


在去年的 Google I/O 大会上,谷歌团队宣布了自己的实验性的桌面项目,并逐步把相关成果融合至 Flutter 引擎当中以作为主版本的新增内容。虽然该项目还没有达到生产级水平,但已经可以供爱好者们尝鲜,在 Mac、Windows 及 Linux 等桌面平台上开发 Flutter 应用程序。


在这一过程中,谷歌重构了 Flutter 引擎的大量代码,以支持桌面端的鼠标和键盘输入以及可调整大小的顶级窗口。Flutter 还针对桌面端新加入了很多 UI 特性,如 Material Density 支持和 NavigationRail,以及 Dart:FFI 中的实验特性,和接入系统菜单栏和标准对话框等,从而深度集成进桌面 OS 底层。由此以来,Flutter 便可以用来构建全功能、全尺寸的桌面应用了。


而在 7 月 8 日,谷歌与 Ubuntu 的发行方 Canonical 共同发布了 Flutter 在 Linux 上的第一个 Alpha 版本,标志着 Flutter 向 Linux 桌面端的扩展之路正式迈出了第一步!

为什么要在 Linux 上使用 Flutter?

当谷歌在去年宣布要为 Flutter 添加桌面级应用程序支持时,Canonical 就意识到这对于 Linux 发行版来说是一个大好机遇。Flutter 有望大大简化 Linux 应用的开发过程,应用程序开发人员可以非常轻松地通过 Snap Store(Linux 应用程序商店)为 Linux 用户发布他们的应用程序。Linux 成为一流的 Flutter 目标平台后,开发人员就可将其应用传播给数以百万计的 Linux 用户,这些用户将会有更多高质量的应用可用。


对于 Linux 平台来说,Flutter 有很多颇具吸引力的优秀特性:


  • 蓬勃发展的应用程序开发人员生态系统

  • 多平台支持

  • 高度优化的原生应用程序

  • 现代 UI 框架,支持声明式,反应式和可组合的小部件

  • 包括 Visual Studio Code、Android Studio 和 IntelliJ 在内的丰富开发平台支持


Canonical 组建了一支开发团队与谷歌紧密合作,努力将 Flutter 带入 Linux 世界。两家公司未来将继续合作改进 Flutter 的 Linux 支持,并确保 Linux 平台的支持水平与其他平台对等。


为了证明 Flutter 已为桌面端做好了准备,Canonical 与 gskinner.com 的设计师和开发人员合作,创建了一个创新而精美的 Flutter 桌面应用程序——Flokk


除了能够管理用户的联系人(包括搜索联系人、添加新联系人和编辑现有联系人)之外,用户在 Flokk 中还能将 GitHub 和 Twitter 处理的信息与联系人相关联。此外,Flokk 还使用了一系列 Flutter 特性来改进 UI 体验。例如,应用不仅有深色主题,而且在切换颜色主题时还有动画效果。



Flokk Contacts 应用背后的创意团队由 Grant Skinner 领导,他以出色的设计和打造创新的用户体验而知名。Grant 是这样评价在 Linux 上使用 Flutter 的体验的:


“构建 Flokk Contacts 应用非常容易!我们几乎无需进行任何调整就可以将我们在 Flutter 上的所有专业知识应用在 Linux 目标平台上,并且成品应用运行起来非常出色。与 Canonical 团队合作是一次很棒的经历。他们热心,投入并充满激情,努力让 Flutter 在包括 Linux 的所有平台上都有更好的表现。这是一个了不起的项目,我很高兴能够使用 Flutter 为另一个主流操作系统开发应用。”

在 Linux 上安装 Flutter

为了让用户可以轻松地在自己的 Linux 系统中安装 Flutter,谷歌和 Canonical 在 Snap Store 中提供了 Linux 版的 Flutter SDK snap


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 dev(或 master)通道并启用 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 项目从诞生之初就备受瞩目,有谷歌背书的 Flutter 不仅设计优秀,而且在规划与执行力上也非常规开源项目可比。谷歌为了支持 Flutter 的发展,不仅打造了 Dart 语言,更是做了时间、节奏精准的规划,即便是在只能支持移动平台的发展初期,也毫不掩饰自己全平台制霸的“野心”。


在过去的一段时间里,我们看着 Flutter 一步步从爱好者的“玩物”到开发团队的尝鲜再到生产级的使用,也许明年,Linux 平台的 Flutter 已经可以在生产环境中发光发热了。


Flutter:小孩才做选择,大人全都要!


2020-07-13 13:547279
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 377.7 次阅读, 收获喜欢 1972 次。

关注

评论

发布
暂无评论
发现更多内容

我的云原生学习方法 | 社区征文

大菠萝

新春征文

Web Components系列(三) —— 创建 Custom Elements

编程三昧

前端 组件化 2月月更 WebContents

拒绝做工具小子—编写Python漏洞验证脚本

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

【架构训练营-模块二】

默光

微信朋友圈 架构训练营5期

云端开发在阿里的典型应用场景 | 阿里巴巴DevOps实践指南

阿里云云效

阿里云 云原生 云平台 研发工具 云端开发

领域模型设计该如何落地到数据库设计?

蜜糖的代码注释

Java DDD 领域模型 2月月更

TiDB 在国信证券海量数据高并发场景中的实践

陈培新

TiDB

网络安全kali渗透学习 web渗透入门 Google搜索引擎的使用技巧

学神来啦

BIGO 使用 Flink 做 OLAP 分析及实时数仓的实践和优化

Apache Flink

大数据 flink 编程 后端 实时计算

Linux之vmstat命令

入门小站

Linux

一文搞明白直播和点播的区别 | 社区征文

liuzhen007

音视频 新春征文 2月月更

关于如何构建 Go 代码的思考

宇宙之一粟

Go 语言 2月月更

react源码解析3.react源码架构

buchila11

React

一起玩转LiteOS组件:Pixman

华为云开发者联盟

LiteOS LiteOS组件 Pixman Pixman Demo LiteOS组件仓库

无障碍读屏出错了

admin

小程序 性能优化 瀑布流 relations 无障碍

AI+Science:基于飞桨的AlphaFold2,带你入门蛋白质结构预测

百度大脑

知识库的作用

PingCode

RTE2021 回顾丨HDR 技术产品实践与探索

声网

人工智能 HDR

在线ASCII流程图编辑器工具

入门小站

工具

SAP 移动开发技术综述 | 社区征文

Jerry Wang

android 移动开发 cordova 新春征文 2月月更

在线学习FTRL介绍及基于Flink实现在线学习流程|社区征文

张浩_house

机器学习 大数据 flink 新春征文

王者荣耀商城异地多活设计

皓月

「架构实战营」

产品经理角色理解

wood

300天创作

设计模式【13】-- 模板模式怎么弄?

秦怀杂货店

Java 设计模式 23种设计模式

C#中的数据字典Dictionary

Andy阿辉

C# 程序员 程序人生 2月日更

一个人手写APP监控平台是什么体验 | 社区征文

一诺倾心

flutter android 性能优化 APM

不会用SpringBoot连接Redis,那就赶紧看这篇

华为云开发者联盟

redis 开发 springboot Redis服务器

推荐 3 个 React 动画库

devpoint

React 网页动画 2月月更

mysql 面试总结

yuexin_tech

面试

AI象棋,谁与争锋

乌龟哥哥

AI 2月月更

B站员工猝死,审核员之殇,谁该反省?谁该惭愧?技术层面解构内容安全审核系统(python3)

刘悦的技术博客

系统架构 内容审核 Python3 应用审核 构架

Flutter全平台制霸再进一步:实现Linux桌面应用支持_大前端_小智_InfoQ精选文章