写点什么

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

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

关注

评论

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

NFTScan:05.08~05.14 NFT 市场热点汇总

NFT Research

NFT

Last Week in Milvus

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

首个支持RWA交易的订单簿DEX-PoseiSwap,即将开启IEO

BlockChain先知

PoseiSwap缘何成DEX赛道新宠?POSE价值分析

股市老人

古鱼、恐龙和大众,相逢在百度百科的“彩虹桥”

脑极体

百科

NUMA架构介绍及优缺点分析

天翼云开发者社区

架构设计 NUMA

MobTech MobPush|助力预热618

MobTech袤博科技

局域网内使用的多人协同编辑文档的软件哪个好?对比5款主流平台

爱吃小舅的鱼

Confluence PingCode 文档管理工具

2023-05-15:对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次, 能够使结果字符串等于 s2 ,则认为字符串 s1 和 s2 的 相似度为 k。 给你两个字母异位词 s1

福大大架构师每日一题

Go 算法 rust 福大大

浅谈TCP、UDP、ICMP三种常见协议

天翼云开发者社区

网络传输协议

龙蜥产品生态总监做客 InfoQ:后 CentOS 时代,国产操作系统能否扛起大旗?

OpenAnolis小助手

centos InfoQ 迁移 国产操作系统 龙蜥社区

对不起,您的访问次数已用尽!

为自己带盐

.net core 限流 AspNetCoreRateLimit

共铸国云 智领未来 | 化云为雨 泽被万物

天翼云开发者社区

云计算 网络

Footprint Analytics、Oasys L2 区块链和 HOME Verse 联手推动区块链游戏基础设施创新

Footprint Analytics

Django笔记二十九之中间件介绍

Hunter熊

Python django 中间件 middleware

VictoriaMetrics常见性能问题排查

天翼云开发者社区

vm 架构设计

首个支持RWA交易的订单簿DEX-PoseiSwap,即将开启IEO

股市老人

Nautilus Chain 或成未来最好的链上隐私生态

鳄鱼视界

Nautilus Chain 或成未来最好的链上隐私生态

股市老人

骨灰级技术大牛左耳朵耗子(陈皓)突发心梗离世。

福大大架构师每日一题

福大大

首个支持RWA交易的订单簿DEX-PoseiSwap,即将开启IEO

西柚子

4 月 NFT 月报: 在动荡的 NFT 市场中寻求生存

Footprint Analytics

区块链游戏 NFT 链游

C语言编程-基本语法

芯动大师

AI低代码,或将再次颠覆开发行业

引迈信息

低代码 AIGC JNPF AI低代码

专访高雪峰:从GPT3.5到4,超强推理能力的实现与“图”密不可分 | 36氪专访

Fabarta

人工智能 AI 图计算 图智能

Footprint Analytics 与 Oasys 建立合作关系, 用数据帮助项目方提升游戏开发体验

Footprint Analytics

区块链 Footprint Analytics

远程桌面连接可以传文件么?

RayLink远程工具

远程桌面连接

Nest.js JWT 验证授权管理

程序员海军

Node JWT nest

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