Agentic AI、具身智能、强化学习框架、端侧大模型……来QCon上海站,感受AI的未来! 了解详情
写点什么

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

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

关注

评论

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

双十一企业协作效率再升级!华为云Flexus版云会议299元_年起

轶天下事

极狐GitLab如何禁止从 UI 上下载代码?

极狐GitLab

gitlab

离散元仿真技术与AI融合,助力广泛行业实现创新突破

Altair RapidMiner

AI 仿真 DEM altair 离散元

七招提升工作效率

俞凡

生产力

双十一轻松实现云上高效沟通!华为云Flexus云会议实测体验领先

轶天下事

更经济实惠的SD-WAN组网

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

业务、技术、管理,谁才是指标平台的用户?

Aloudata

数据仓库 数据分析 指标管理 指标平台 指标开发

优化数据管理,提升监测效率:TDengine与新疆地环院达成合作

TDengine

tdengine 时序数据库 数据库·

用 Zap 轻松搞定 Go 语言中的结构化日志

左诗右码

权限系统:6个权限概念模型设计

不在线第一只蜗牛

数据库 大数据 运维

比 Copilot 快两倍以上!在我的开源项目 AI Godot 桌宠中用通义灵码解决问题

阿里巴巴云原生

阿里云 云原生

应用网关的演进历程和分类

阿里巴巴云原生

阿里云 云原生 网关

30 秒!用通义灵码画 SpaceX 星链发射流程图

阿里云云效

阿里云 云原生

比 Copilot 快两倍以上!在我的开源项目 AI Godot 桌宠中用通义灵码解决问题

阿里云云效

阿里云 云原生

八招解决 Golang 性能问题

俞凡

golang

极速启动,函数计算弹性降本能力再升级

阿里巴巴云原生

阿里云 云原生 函数计算

云速搭助力用友 BIP 平台快速接入阿里云产品

阿里巴巴云原生

阿里云 云原生 BIP

快递鸟物流跟踪API代码参数接入流程

快递鸟

快递物流

语音 AI 革命:未来,消费者更可能倾向于与 AI 沟通,而非人工客服

声网

一图看懂云消息队列 RabbitMQ 版对比开源优势

阿里巴巴云原生

阿里云 云原生

GitLab 出现 500错误怎么解决?

极狐GitLab

gitlab

双十一低成本上车!详谈华为云Flexus云会议为我们中小企业带来了什么

轶天下事

30 秒!用通义灵码画 SpaceX 星链发射流程图

阿里巴巴云原生

阿里云 云原生

多源异构数据源融合怎么做?Join操作篇(2)

谷云科技RestCloud

数据分析 join ETL 多源异构数据融合

澳鹏白皮书:2024年AI全景报告

澳鹏Appen

人工智能 行业报告

海外网络加速的技术手段有哪些?

Ogcloud

网络加速 企业组网 海外网络加速 企业网络加速 CDN网络加速

百度发布 AI 眼镜:全球首搭中文大模型,支持边走边问;OpenAI 联合创始人宣布回归,主抓重大技术创新丨 RTE 开发者日报

声网

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