likes
comments
collection
share

Flutter Desktop 可行性

作者站长头像
站长
· 阅读数 35

一、简介

  Flutter Desktop 是 Flutter 框架的一个扩展,允许开发者使用 Flutter 构建跨平台的桌面应用程序,包括 Windows、macOS 和 Linux。

二、创建、运行、打包

  • 新建项目:
flutter create desktop_app --platforms=windows,macos,linux
  • 在指定设备上运行
flutter run -d windows
  • 在指定设备上打包
flutter build windows --release

三、Flutter Desktop 实现桌面端程序的原理和流程

  • Flutter 渲染引擎

  Flutter 使用自绘渲染引擎(Skia),它能够直接绘制 UI,无需依赖系统的原生控件,从而实现了跨平台的 UI 统一性。

  • Platform Channel

  Flutter 提供了 Platform Channel,这是一个用于在 Dart 代码和平台特定代码(如 C++)之间进行通信的机制。这使得 Flutter 能够与底层平台进行交互,调用操作系统的 API。

  • Embedding Layer

  Flutter Desktop 通过嵌入层将 Flutter 渲染引擎嵌入到桌面应用程序中。嵌入层是一个 C++ 接口层,负责在桌面系统上运行 Flutter 渲染引擎。

  • Platform-specific Integration

  为了适配不同的桌面平台,Flutter Desktop 需要针对每个平台实现一些特定的集成和适配工作,以确保应用程序在不同平台上的稳定性和性能。

  • 打包和发布

  一旦开发完成,Flutter Desktop 应用程序可以使用 Flutter 提供的工具对其进行打包和发布,生成针对特定平台的可执行文件。

四、Flutter Desktop 与 Electron 程序的全面对比

  • 性能
    • Flutter Desktop 使用自绘引擎,因此在性能方面可能更加高效,尤其是在复杂 UI 和动画方面。
    • Electron 使用了 Chromium 浏览器作为渲染引擎,可能在资源消耗和性能方面较 Flutter Desktop 更加昂贵。
  • 跨平台性
    • Flutter Desktop 支持 Windows、macOS 和 Linux,实现了真正的跨平台性。
    • Electron 也支持多个平台,但在一些方面可能需要针对不同平台做一些额外的适配工作。
  • 开发体验
    • Flutter 提供了丰富的 UI 组件和热重载功能,开发体验较为流畅。
    • Electron 开发使用 HTML、CSS 和 JavaScript,与 Web 开发体验类似,但可能需要考虑到不同平台之间的差异性。
  • 生态系统
    • Electron 拥有庞大且成熟的生态系统,有大量的第三方插件和工具可用。
    • Flutter Desktop 的生态系统相对较小,但随着 Flutter 的普及,正在迅速增长。
  • 资源占用
    • 由于 Electron 使用了 Chromium 浏览器作为渲染引擎,因此它可能会占用更多的系统资源。
    • Flutter Desktop 采用自绘引擎,可能在资源消耗方面更加节约。

五、来自APP的精简移植版本

  • 项目目录

Flutter Desktop 可行性

  • 调试项目

Flutter Desktop 可行性

六、值的注意的问题

  • 1. Pub包的平台支持性

比如下面这个就只支持 AndroidIOS,需要找支持 WindowsMacOS的;

Flutter Desktop 可行性

  • 2. 样式适配问题

在App端,宽高比和最大尺寸相对可控

而在桌面端,需要适配很多情况的布局种类等相关样式问题

  • 3. 路由及窗口的管控问题

在App端,当前展示的只能是一个页面,最多再加个弹窗

而在桌面端,可能会多个页面或窗口同时出现,或者嵌套

  • 4. 其他待考究的问题

七、结论

  经调研,可行性很高

转载自:https://juejin.cn/post/7387063024030318602
评论
请登录