文章主要参考CSDN孤影过客的文章《快速入门Flutter:从零开始构建你的第一个应用》^[https://blog.csdn.net/gygkhd/article/details/139646716]
一、环境准备
1-安装 Flutter SDK
在官网Flutter - Build apps for any screen下载Flutter SDK。

可以参考文档开发 Windows 桌面应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

安装 Visual Studio Code 以及 Flutter extension for VS Code
打开VS Code,下载Flutter拓展

1-1-安装 Flutter
- 打开 命令面板 (Command Palette),按下快捷键 Control + Shift + P。

- 在 命令面板 (Command Palette) 中输入
flutter
。

- 选择 Flutter: New Project。

- 显示没有安装 Flutter SDK, 单击 Download SDK。当对话框 Select Folder for Flutter SDK 显示时,选择你想要安装 Flutter 的位置。

- 等待下载完成

注意
不要将 Flutter 安装到以下情况的目录或路径中:
1-2-解决Resolving dependencies…问题
发现卡在Resolving dependencies…这一步
1 2 3 4 5
| Running pub upgrade...
Resolving dependencies...
Got socket error trying to find package file at https:
|
打开环境变量

在用户变量下添加下面两个变量名:
1
| FLUTTER_STORAGE_BASE_URL https:
|

成功后会显示通知:
1
| The Flutter SDK was added to your PATH
|

1-3-检查安装是否成功
打开PowerShell。

运行以下指令。

安装成功
二、第一个应用
2-1-创建应用
打开你想要创建Flutter应用的位置

打开终端

在终端中,运行以下命令创建一个新的 Flutter 项目:
1
| flutter create my_first_app
|
创建完毕


进入项目目录:
2-2-运行应用
运行以下命令启动应用:

选择设备后,弹出测试程序

在创建的项目中,目录结构如下:
1 2 3 4 5 6 7 8
| my_first_app/ ├── android/ ├── ios/ ├── lib/ │ └── main.dart ├── test/ ├── pubspec.yaml └── README.md
|
其中:
lib/
:主要的 Dart 代码目录,main.dart
是应用的入口文件。
pubspec.yaml
:项目的配置文件,用于管理依赖包。
三、编译应用
3-1-生成apk文件
在对应目录下打开终端,输入

但总是卡在
1
| Running Gradle task 'assembleRelease'...
|
这一步,网上的各种教程都是说修改/android/build.gradle
、flutter/packages/flutter_tools/gradle/flutter.gradle
这些.gradle
结尾的文件,但实际打开目录时发现这些文件后面多了kts
后缀。

这种情况通常发生在较新的Android项目中,因为Google正在推动从Groovy转向Kotlin DSL作为构建脚本语言。新版Android Studio的gradle文件已经默认使用Kotlin脚本(KTS)。
.gradle使用Groovy语言编写,而.gradle.kts使用Kotlin脚本。
所以应该修改settings.gradle.kts
文件和build.gradle.kts
文件。
对于settings.gradle.kts
文件

在此处插入国内镜像源

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/public")
maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
maven(url = "https://maven.aliyun.com/repository/jcenter")
maven(url = "https://repo.huaweicloud.com/repository/maven")
maven(url = "https://mirrors.cloud.tencent.com/nexus/repository/maven-public")
maven(url = "https://mirrors.tuna.tsinghua.edu.cn/maven")
maven(url = "https://mirrors.ustc.edu.cn/maven")
|
完整配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| pluginManagement { val flutterSdkPath = run { val properties = java.util.Properties() file("local.properties").inputStream().use { properties.load(it) } val flutterSdkPath = properties.getProperty("flutter.sdk") require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } flutterSdkPath }
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
repositories {
maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/public")
maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
maven(url = "https://maven.aliyun.com/repository/jcenter")
maven(url = "https://repo.huaweicloud.com/repository/maven") maven(url = "https://mirrors.cloud.tencent.com/nexus/repository/maven-public")
maven(url = "https://mirrors.tuna.tsinghua.edu.cn/maven")
maven(url = "https://mirrors.ustc.edu.cn/maven")
google() mavenCentral() gradlePluginPortal() } }
plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" id("com.android.application") version "8.7.3" apply false id("org.jetbrains.kotlin.android") version "2.1.0" apply false }
include(":app")
|
对于build.gradle.kts
文件

添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/public")
maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
maven(url = "https://maven.aliyun.com/repository/jcenter")
maven(url = "https://repo.huaweicloud.com/repository/maven")
maven(url = "https://mirrors.cloud.tencent.com/nexus/repository/maven-public")
maven(url = "https://mirrors.tuna.tsinghua.edu.cn/maven")
maven(url = "https://mirrors.ustc.edu.cn/maven")
|
完整配置如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| allprojects { repositories { maven(url = "https://maven.aliyun.com/repository/google")
maven(url = "https://maven.aliyun.com/repository/public")
maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
maven(url = "https://maven.aliyun.com/repository/jcenter")
maven(url = "https://repo.huaweicloud.com/repository/maven") maven(url = "https://mirrors.cloud.tencent.com/nexus/repository/maven-public")
maven(url = "https://mirrors.tuna.tsinghua.edu.cn/maven")
maven(url = "https://mirrors.ustc.edu.cn/maven")
google() mavenCentral() } }
val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() rootProject.layout.buildDirectory.value(newBuildDir)
subprojects { val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) project.layout.buildDirectory.value(newSubprojectBuildDir) } subprojects { project.evaluationDependsOn(":app") }
tasks.register<Delete>("clean") { delete(rootProject.layout.buildDirectory) }
|

添加镜像源后速度恢复正常。

编译apk成功

输出路径在项目名\build\app\outputs\apk\release
内

3-2-生成exe文件
项目目录下,在命令行输入

生成exe成功
