该篇文章的核心是去介绍一下Flutter项目目录结构以及主要文件和文件夹,特别是pubspec.yaml文件。担心有些小伙伴再最开始学习flutter的时候会不熟悉Android studio。所以就啰嗦几句简单介绍一下如何通过Android studio来创建一个flutter项目。如果不需要的可以直接跳过这部分就好了。
创建Flutter项目
通过Android studio去创建Flutter项目。 选中Flutter项目,SDK地址一般都是默认你自己配好的,如果没有就通过文件选择,选择flutter解压后的地址。
点击下一步:
输入完内容之后,点击创建。则会生成一个这样的项目目录结构:
项目结构解析
1. lib
lib是flutter项目的核心文件夹,所有的Dart相关代码都是这个文件夹下面的 Main.dart 是项目入口,通过这个文件中的main方法启动App
csharp
void main() {
runApp(const MyApp());
}
2. test/
test文件夹是和单元测试相关的,学flutter阶段的话,可以不用去考虑这个文件夹下的内容。
3. ios
- 存放原生平台代码,用于定制化配置(如图标、权限、签名)
- 更改App图标:os/Runner/Assets.xcassets/AppIcon.appiconset
- 添加权限:ios/Runner/Info.plist
4. android
-
存放原生平台代码,用于定制化配置(如图标、权限、签名)。
-
如果需要修改App图标:则替换
android/app/src/main/res/mipmap*
文件中对应的icon。xml<application android:label="flutter_demo" android:name="${applicationName}" android:icon="@mipmap/ic_launcher"> <!-- App图标 --> </manifest>
-
如果需要添加权限:则更改 android/app/src/main/AndroidManifest.xml文件
xml<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:label="flutter_demo" android:name="${applicationName}" android:icon="@mipmap/ic_launcher"> <!-- 添加权限 --> <uses-permission android:name="android.permission.INTERNET" /> ... </manifest>
5. pubspec.yaml
Flutter项目很重要的一个配置文件,包括依赖管理,资源,主题等。 依赖管理:
例:
yaml
name: flutter_demo # 项目的名称
description: "A new Flutter project." #项目的描述
publish_to: 'none' # 这个默认是none值,是如果你的个人项目想要发不到pub.dev仓库,需要删除这行
version: 1.0.0+1 # 项目的版本号,格式为:x.y.z+[build number]
dependencies: # 依赖管理模块
flutter: any
http: ^1.0.0 # 网络请求库
provider: ^6.0.0 # 状态管理库
my_package: #允许添加github上的一些库
git:
url: https://github.com/username/repo.git # 这个也可以是一下公司内部版本库地址
ref: main
path: packages/my_package # 可选子目录
my_local_package:
path: ../my_local_package # 还可以设置当前项目的模块作为依赖
dev_dependencies: #只有在开发阶段才会拉取的依赖
flutter_test:
sdk: flutter
mockito: ^5.0.0 # 单元测试辅助库
dependency_overrides: # 需要覆盖的依赖
http:
git:
url: https://github.com/your-repo/http.git
ref: dev
flutter:
uses-material-design: true # 开启使用Material的设计,在Material的组件中可是与其相关的一些icon
fonts: # 可以设置自己的字体, 支持配置多套字体
- family: MyFont #字体的命名
fonts:
- asset: assets/fonts/MyFont-Regular.ttf # 字体的存放路径
assets: # 资源文件路径配置
- assets/images/ #路径,文件名字可以自定义
- assets/configs/ #路径,文件名字可以自定义
关键字段的说明
-
name: 项目的名称
-
description: 项目简介
-
version: 项目的版本号
- 项目版本号,格式为
x.y.z+[build number]
x.y.z
:语义化版本(主版本.次版本.修订)。build number
:构建号(如1.0.0+1
)。
- 项目版本号,格式为
-
publish_to :指定包的发布位置,防止意外发布到
pub.dev
none
:不发布到任何位置(默认)。pub.dev
:发布到公共仓库。- 自定义地址:发布到私有仓库(如
https://your-private-repo.com
-
dependencies:依赖管理,支持pub.dev官方库版本依赖,github等公共管理库依赖,当前项目子模块等依赖
-
Pub.dev库依赖。
yamlprovider: ^6.0.0 # 状态管理库
-
Github公共库依赖
yamlmy_package: #允许添加github上的一些库 git: url: https://github.com/username/repo.git # 这个也可以是一下公司内部版本库地址 ref: main path: packages/my_package # 可选子目录
-
当前项目子模块依赖
yamlmy_local_package: path: ../my_local_package # 还可以设置当前项目的模块作为依赖
-
-
dev_dependencies : 只有在开发阶段才会拉取的依赖。使用规则和dependencies一致
-
dependency_overrides: 项目都会有很多依赖,比如多个项目依赖了同一个插件,但是版本不一样,可以去覆盖,支持的规则和dependencies一致。
-
uses-material-design: 默认是true,开启material设计的支持。开启了之后可以直接去使用一些material风格的icon之类的。
-
fonts: 可以设置项目自定义字体,支持配置多种字体。具体配置可以参考:
yamlfonts: # 可以设置自己的字体, 支持配置多套字体 - family: MyFont #字体的命名 fonts: - asset: assets/fonts/MyFont-Regular.ttf # 字体的存放路径
-
assets: 资源文件的配置路径,项目刚创建的时候可能没有这个文件夹,需要手动创建,在项目的根目录下。
bashassets: # 资源文件路径配置 - assets/images/ #路径,文件名字可以自定义 - assets/configs/ #路径,文件名字可以自定义
6. pubspec.lock
执行flutter pub get命令的时候根据pubspec.yaml中配置的三块dependences生成的,主要是用于锁定每个依赖的版本号,需要提交到版本控制。
以上就是Flutter项目目录结构的一个简要说明。感谢您耐心看到最后,如果不对的地方欢迎指正。