写点什么

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:548336
用户头像
小智 让所有人认同的文字称不上表达

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

关注

评论

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

Cisco Jabber 15.0 发布下载 - 面向企业的多合一通信工具

sysin

Cisco 通信 思科 即时消息

DApp开发入门指南:从概念到实践!DApp开发流程+DApp 经济模型

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

抖音商品SKU数据接口深度解析:解锁Dy.item_sku的电商新纪元

代码忍者

API 测试 pinduoduo API

中文区块链媒体自媒体哪些发起来最有性价比?(非权威勿喷)

区块链项目一站式包装孵化

资深ETL工程师经验分享:ETL项目的5大挑战与策略

RestCloud

数据处理 ETL 数据集成 集成工具

高并发设计之细粒度锁 : 5种细粒度锁的设计技巧图解(高并发篇)

肖哥弹架构

Java 乐观锁 悲观锁 高并发

MongoDB 双活集群在运营商的实践

tapdata

数据库

macOS Sonoma 14.7 (23H124) Boot ISO 原版可引导镜像下载

sysin

macos ISO Sonoma

币圈项目为什么要做cmc+cg(双c)?

区块链项目一站式包装孵化

“AI+Security”系列第3期(一):AI 安全智能体,重塑安全团队工作范式

云起无垠

AI赋能美好生活,OpenVINO™技术成果助力多领域发展

E科讯

【理论篇】关于聚合根,领域事件的那点事---深入浅出理解DDD

京东科技开发者

Revolutionizing Long-Range Wi-Fi: How IPQ5010 Series Tackles Point-to-Point Transfer Challenges!

wallyslilly

ipq5018 IPQ5010 ipq9574

堡垒机啥意思?怎么简单理解?

行云管家

网络安全 堡垒机

【解决方案】Java 互联网项目中常见的 Redis 缓存应用场景

EquatorCoco

Java redis 缓存

NetFlow Analyzer:精准流量洞察,引领网络安全新纪元

Geek_a83400

信创里程碑:TapData 与海量数据达成产品兼容互认证,共同助力基础设施国产化建设

tapdata

数据库

Web3 星探 a16z 新加速器启动,盘点入围的「未来之星」

TechubNews

《中国移动算力网络数据库白皮书》正式发布,NineData叶正盛分享

NineData

数据库 中国移动 叶正盛 NineData 算力网络数据库白皮书

如何保持telegram电报群活跃?

区块链项目一站式包装孵化

一位架构师的自述:在尚未踏入的世界成为你自己

京东科技开发者

VMware Tanzu Kubernetes Grid 2.5.2 发布下载,新增功能概览

sysin

Kubernetes 云原生 vmware Tanzu

NFTScan | 09.16~09.23 NFT 市场热点汇总

NFT Research

NFT\ NFTScan

机构加仓生态良好 比特币牛市延续有戏

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 代币开发

丽江等级保护测评机构有几家?在哪里?

行云管家

等保 丽江 等保测评

总裁,这是一份覆盖50家媒体的区块链发文套餐,请您收下!

区块链项目一站式包装孵化

2024开放原子开源生态大会 | 双轮驱动,开源生态建设从“幼苗”成长为“大树”

Geek_2d6073

Cellebrite UFED 4PC 7.70 下载 - Android 和 iOS 移动设备取证软件

sysin

ios android UFED 移动取证 手机取证

数据结构与算法之间有何关系?

不在线第一只蜗牛

数据结构 算法

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