[Flutter 基础] - Flutter 目录结构及关键文件pubspec.yaml的介绍

该篇文章的核心是去介绍一下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库依赖。

      yaml 复制代码
       provider: ^6.0.0 # 状态管理库
    • Github公共库依赖

      yaml 复制代码
       my_package: #允许添加github上的一些库
          git:
            url: https://github.com/username/repo.git # 这个也可以是一下公司内部版本库地址
            ref: main
            path: packages/my_package  # 可选子目录
    • 当前项目子模块依赖

      yaml 复制代码
        my_local_package: 
          path: ../my_local_package # 还可以设置当前项目的模块作为依赖
  • dev_dependencies : 只有在开发阶段才会拉取的依赖。使用规则和dependencies一致

  • dependency_overrides: 项目都会有很多依赖,比如多个项目依赖了同一个插件,但是版本不一样,可以去覆盖,支持的规则和dependencies一致。

  • uses-material-design: 默认是true,开启material设计的支持。开启了之后可以直接去使用一些material风格的icon之类的。

  • fonts: 可以设置项目自定义字体,支持配置多种字体。具体配置可以参考:

    yaml 复制代码
      fonts:  # 可以设置自己的字体, 支持配置多套字体
        - family: MyFont #字体的命名
          fonts:
            - asset: assets/fonts/MyFont-Regular.ttf # 字体的存放路径
  • assets: 资源文件的配置路径,项目刚创建的时候可能没有这个文件夹,需要手动创建,在项目的根目录下。

    bash 复制代码
      assets:  # 资源文件路径配置
        - assets/images/ #路径,文件名字可以自定义
        - assets/configs/  #路径,文件名字可以自定义
6. pubspec.lock

执行flutter pub get命令的时候根据pubspec.yaml中配置的三块dependences生成的,主要是用于锁定每个依赖的版本号,需要提交到版本控制。

以上就是Flutter项目目录结构的一个简要说明。感谢您耐心看到最后,如果不对的地方欢迎指正。

相关推荐
星释4 分钟前
鸿蒙Flutter仓库停止更新?
flutter·华为·harmonyos
ak啊10 分钟前
Flutter UI 组件基础
flutter
在广东捡破烂的吴彦祖21 分钟前
window配置Flutter开发环境
前端·flutter
dora27 分钟前
Flutter的屏幕适配
android·flutter
SoulKuyan1 小时前
android 发送onkey广播,Android 添加键值并上报从驱动到上层
android
Yang-Never1 小时前
ADB->查看某个应用的版本信息
android·adb·android studio
居然是阿宋3 小时前
Android RecyclerView 多布局场景下的设计思考:SRP 与 OCP 的权衡与优化
android·开闭原则·单一职责原则
前行的小黑炭3 小时前
Retrofit框架分析(二):注解、反射以及动态代理,Retrofit框架动态代理的源码分析
android·kotlin·retrofit
zach3 小时前
android项目如何修改第三方类库,导入到自己的项目中
android·前端·架构
三思而后行,慎承诺3 小时前
安卓的Launcher 在哪个环节进行启动
android