Flutter开发桌面端程序

前言

先说结论,目前Flutter还不能作为生成环境的桌面开发技术,这里仅作为尝鲜来学习。

有一些用其它桌面端开发技术非常容易实现的功能,但它无法实现比如

Flutter还不支持多窗口应用,只能通过一些不合理的方式实现,比如窗口背景透明,内部用子组件模拟窗口。

环境配置

Flutter环境

安装Flutter

下载Flutter SDK

解压,比如我放到了D:\Tools\flutter目录

设置环境变量,添加

D:\Tools\flutter\bin

开启Windows支持

1
flutter config --enable-windows-desktop

目前正式版已经支持桌面端,如果想尝鲜新的特性可以切换到其他分支。

设置Flutter镜像

添加环境变量

属性
PUB_HOSTED_URL https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL https://storage.flutter-io.cn

查看设置是否成功

CMD

1
2
echo %PUB_HOSTED_URL%
echo %FLUTTER_STORAGE_BASE_URL%

PowerShell

1
2
$env:PUB_HOSTED_URL
$env:FLUTTER_STORAGE_BASE_URL

查看所有的环境变量

1
ls env:

切换其他分支

将flutter切换到beta分支上

1
flutter channel beta

flutter 分支介绍(运行flutter channel命令可以看到当前所在版本):

  • master 最新版本,有新特性功能,也有新的bug
  • dev 经过全面测试的版本,相比master会更稳定
  • beta 每个月最稳定的dev版本会升级成beta
  • stable 稳定版,生产环境建议使用该版本

步骤

1
2
3
4
flutter channel beta
flutter channel #查看当前在哪个分支,检测是否切换成功
flutter upgrade #升级
flutter doctor #检测flutter环境,未安装的会报红提示

C++环境

Flutter打包桌面端程序需要有C++开发环境

安装Visual Studio,下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 下载一下就ok了

img

创建运行项目

创建项目

1
flutter create myapp

运行项目

1
2
cd myapp
flutter run

操作如图

image-20211025170853346

输入1,程序就运行起来了。

项目生成的目录如下

image-20211027183603998

注意

运行过程中修改代码后,控制台中输入r,会进行热重载。

默认exe生成位置在项目下build\windows\runner\Debug

下面的文章只作为记录,目前没有使用的必要。

热重载环境

Hover - Run Flutter apps on the desktop with hot-reload

网上都说这是一个打包工具,其实这个工具是热重载工具,并支持程序打包,但是实测现在还无法打包Winodows程序包,并且直接用flutter run也是支持热重载的,所以目前没有使用的必要

这个工具是GO写的,所以依赖GO环境。

配置GO环境

https://golang.google.cn/dl/

下载GO

安装后它会自动添加环境变量

查看版本

1
go version

成功显示

go version go1.16.3 windows/amd64

设置GO的代理地址

设置环境变量GOPROXY=https://goproxy.cn

image-20210412110225584

修改默认的GOPATH

image-20211025173018547

注意

修改这样主要是方便我们下载的三方程序默认在Go目录下,环境变量中不要包含bin,否则会出现两层bin目录。

配置GCC环境

https://sourceforge.net/projects/mingw-w64/files/mingw-w64/

image-20211025175224043

解压后添加环境变量

1
D:\Tools\mingw64\bin

hover安装和环境配置

1
go get -u github.com/go-flutter-desktop/hover

稍等会hover就会出现在GOPATH

即go语言的SDK下面的bin文件夹下

image-20211025173452662

进入项目下初始化

1
2
cd myqpp
hover init .

初始化后项目下会产生一个go文件夹

生成这个文件夹之后再执行

1
hover run

它会自动创建main_desktop.dart文件

注意

运行过程中修改代码后,控制台中输入r,会进行热重载。

项目下go\build\outputs\windows-debug_unopt就会自动生成exe文件。

构建

1
hover build windows

目前Windows环境还无法构建。