Flutter Desktop 可行性
一、简介
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的精简移植版本
-
项目目录
-
调试项目
六、值的注意的问题
-
1. Pub包的平台支持性
比如下面这个就只支持 Android 和 IOS,需要找支持 Windows 和 MacOS的;
-
2. 样式适配问题
在App端,宽高比和最大尺寸相对可控
而在桌面端,需要适配很多情况的布局种类等相关样式问题
-
3. 路由及窗口的管控问题
在App端,当前展示的只能是一个页面,最多再加个弹窗
而在桌面端,可能会多个页面或窗口同时出现,或者嵌套
-
4. 其他待考究的问题
七、结论
经调研,可行性很高。
转载自:https://juejin.cn/post/7387063024030318602