前言
先说结论,目前Flutter还不能作为生成环境的桌面开发技术,这里仅作为尝鲜来学习。
比如在Windows上目前还不支持发布模式,仅支持调试模式,这意味着编出来的桌面程序,始终有一个黑框控制台,且不断的输出日志。
环境配置
Flutter环境
安装Flutter
下载Flutter SDK
解压,比如我放到了D:Toolsflutter
目录
设置环境变量,添加
D:Toolsflutterbin
开启Windows支持
代码语言:javascript复制flutter config --enable-windows-desktop
目前正式版已经支持桌面端,如果想尝鲜新的特性可以切换到其他分支。
设置Flutter镜像
添加环境变量
属性 | 值 |
---|---|
PUB_HOSTED_URL | https://pub.flutter-io.cn |
FLUTTER_STORAGE_BASE_URL | https://storage.flutter-io.cn |
查看设置是否成功
CMD
代码语言:javascript复制echo %PUB_HOSTED_URL%
echo %FLUTTER_STORAGE_BASE_URL%
PowerShell
代码语言:javascript复制$env:PUB_HOSTED_URL
$env:FLUTTER_STORAGE_BASE_URL
查看所有的环境变量
代码语言:javascript复制ls env:
切换其他分支
将flutter切换到beta分支上
代码语言:javascript复制flutter channel beta
flutter 分支介绍(运行flutter channel命令可以看到当前所在版本):
- master 最新版本,有新特性功能,也有新的bug
- dev 经过全面测试的版本,相比master会更稳定
- beta 每个月最稳定的dev版本会升级成beta
- stable 稳定版,生产环境建议使用该版本
步骤
代码语言:javascript复制flutter channel beta
flutter channel #查看当前在哪个分支,检测是否切换成功
flutter upgrade #升级
flutter doctor #检测flutter环境,未安装的会报红提示
C 环境
Flutter打包桌面端程序需要有C 开发环境
安装Visual Studio,下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 下载一下就ok了
创建运行项目
创建项目
代码语言:javascript复制flutter create myapp
运行项目
代码语言:javascript复制cd myapp
flutter run
操作如图
输入1
,程序就运行起来了。
项目生成的目录如下
程序打包
配置GO环境
https://golang.google.cn/dl/
下载GO
安装后它会自动添加环境变量
查看版本
代码语言:javascript复制go version
成功显示
go version go1.16.3 windows/amd64
设置GO的代理地址
设置环境变量GOPROXY=https://goproxy.cn
修改默认的GOPATH
注意
修改这样主要是方便我们下载的三方程序默认在Go目录下,环境变量中不要包含bin,否则会出现两层bin目录。
配置GCC环境
https://sourceforge.net/projects/mingw-w64/files/mingw-w64/
解压后添加环境变量
代码语言:javascript复制D:Toolsmingw64bin
hover安装和环境配置
代码语言:javascript复制go get -u github.com/go-flutter-desktop/hover
稍等会hover就会出现在GOPATH
下
即go语言的SDK下面的bin文件夹下
进入项目下初始化
代码语言:javascript复制cd myqpp
hover init .
初始化后项目下会产生一个go
文件夹
生成这个文件夹之后再执行
代码语言:javascript复制hover run
它会自动创建main_desktop.dart
文件
项目下gobuildoutputswindows-debug_unopt
就会自动生成exe文件。
构建
代码语言:javascript复制hover build windows
目前Windows环境还无法构建。
目前直接将Flutter App打包为桌面端程序,仍然会存在一些可能的兼容性问题
另外go-flutter-desktop
项目还不支持发布模式,仅支持调试模式,这意味着编出来的桌面程序,始终有一个黑框控制台,且不断的输出日志