Flutter Windows Desktop 应用开发

Flutter on Windows

Flutter on Windows 的一些关键描述

Flutter 跨平台的核心是:便携、 Skia 图形引擎、Flutter 渲染系统、动画、主题、文本输入和国际化以及 Flutter 提供的数百个控件。

但桌面应用不仅仅是在更大屏幕上运行的移动应用:

  • 它还有专用的输入设备,例如键盘和鼠标,并且有可调整大小的窗口,通常在宽屏显示器上运;
  • 对于辅助功能、输入法编辑器和视觉样式等关键事物有着不同的约定规则;
  • 与底层操作系统中的不同 API 集成:桌面应用支持从文件系统选择器到设备硬件,再到 Windows 注册表等数据存储的所有内容;
  • 因此,虽然我们在 Flutter 引入了 Windows 的支持,但我们也为 Windows 量身定制了 Flutter。

正如我们对 Android 和 iOS 的支持一样,Flutter 的 Windows 实现结合了 Dart 框架和 C++ 引擎,Windows 和 Flutter 通过一个嵌入层进行通信,该嵌入层承载 Flutter 引擎并负责翻译和分发 Windows 消息。

Flutter 与 Windows 协调以将开发者的 UI 绘制到屏幕上,处理窗口大小的调整和 DPI 更改等事件,并与现有的 Windows 模式配合使用以实现国际化,例如输入法编辑器。

在 Windows 上 Flutter 使用完全相同的 Dart 代码,但利用了原生的 Windows API,所以你的应用可以使用 Flutter 框架的所有能力。

在 Windows 上它还可以直接通过 Dart’s C Layer 或使用 C++ 编写的平台插件与 Win32、COM 和 Windows 运行时 API 通信,另外我们还调整了一些常用插件以支持 Windows,包括:camerafile_pickershared_preferences 等等。

使用 Windows UI 库

对于完全定制的 Windows UI 可以使用 fluent_uiflutter_acrylic 之类的包来创建一个 Microsoft Fluent 设计的应用程序。

使用 msix 工具可以将应用包装在一个安装程序中,该安装可以上传到 Windows 上的 Microsoft Store。

用于 Windows 开发的工具生态系统

我们的工具合作伙伴也在增加对 Windows 的支持,这里主要强调一些:

  • FlutterFlow 是低代码 Flutter 应用程序设计工具,今天宣布支持 Windows,以及帮助 Flutter 开发人员为构建桌面应用量身定制了对于的功能。
  • Realm是一个超快速的本地数据存储,今天发布的最新版本现在支持使用 Flutter 构建 Windows 应用程序,其使用Dart FFI快速访问底层数据库,增加了对 iOS 和 Android 等移动平台的现有支持。
  • Nevercode 已更新其Codemagic CI/CD 工具以支持 Windows,现在你能够在云中测试和构建你的 Windows 应用,并自动将你的应用程序部署到 Microsoft Store。
  • Syncfusion已更新其控件套件以支持 Windows,如果你订阅了他们的工具包,你会发现有丰富的数据可视化组件,如树形图和图表、丰富的数据网格小部件、日历,甚至支持 PDF 创建和 Excel 电子表格等。
  • 最后 Rive今天宣布了他们的图形工具套件即将推出的 Windows 版本,允许设计人员和开发人员创建可以使用状态机实时响应代码的交互式矢量动画,他们即将推出的 Windows 版本的应用程序提供了惊人的快速性能和更低的内存占用,并且很快将在 Microsoft Store 中提供下载。

Windows应用开发环境准备

1. 安装Flutter SDK

安装到C盘或D盘根目录即可,*不要安装到 C:\Program Files*

git clone https://github.com/flutter/flutter.git -b master

2. 设置环境变量

编辑path环境变量,点击新建,输入复制的flutter bin目录地址。点击确定

3. 开启Desktop平台支持

flutter config --enable-macos-desktop
flutter config --enable-linux-desktop
flutter config --enable-windows-desktop

4. 检查安装是否成功

flutter doctor -v

看到此项是对钩表示成功

查看Flutter支持devices,看到有Windows (desktop)即可。

flutter devices

5. 安装Visual Studio

安装 Visual Studio 2022
Visual Studio 2019,需要选择「使用 C++ 的桌面开发」,包括其所有默认组件,以安装必要的 C++ 工具链和 Windows SDK 的头文件。

6. 安装Android Studio

安装 Android Studio,并且安装 flutter 和 dart 插件。

应用创建及调试

1. 使用命令行或使用AS创建项目

flutter create desktop_app --platforms=windows,macos,linux

#在指定设备上运行
flutter run -d windows

flutter build windows --release

2. Visual Studio运行Flutter项目

创建和修改C/C++时,用VS打开Flutter编译调试会更方便。
使用VS打开\build\windows\runner下的工程,VS里需要设置启动项目,而且使用Release模式,就可以运行起来界面了


Release包及安装包制作

生成Release包

flutter build windows --release

使用上面命令生成可执行文件,目录在build\windows\runner\Release,包含主程序.exe、各个三方库的dll文件、数据文件等;此时Release包相当于一个绿色软件,打开主程序即可运行,但提供给用户的最好是带安装向导的单个文件,因此需要制作应用程序安装包,此次使用Inno setup;

安装 Inno setup

Inno Setup 是一个免费的 Windows 安装程序制作软件。第一次发表是在 1997 年,现在已经更新到Inno Setup 6了。Inno Setup是一个十分简单实用的打包小工具,可以按照我们自己的意愿设置功能,稳定性也十分好。

Inno Setup下载地址:https://jrsoftware.org/isdl.php

Inno setup 打包教程

网上教程较多比较详细,此次省略。

关键操作包括:

  • 设置应用名称、版本号、发布者信息等
  • 选择上面Release包的文件夹及主exe文件
  • 最后会生成安装包及.iss脚本,此脚本可以用上面的配置自动编译,持续集成可以用上。

此外,Inno setup还支持,创建注册表和 .INI条目,在安装之前、期间或之后运行其他程序等,开发过程中也可能会用到。

Inno Setup 官方文档

  • https://jrsoftware.org/ishelp/

Inno setup 其他参考文档

  • Inno setup 打包教程
  • inno setup操作注册表
  • inno setup 通过注册表检测重复安装及重复安装提示卸载