[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项目目录结构的一个简要说明。感谢您耐心看到最后,如果不对的地方欢迎指正。

相关推荐
橙子1991101642 分钟前
Kotlin 中的作用域函数
android·开发语言·kotlin
zimoyin42 分钟前
Kotlin 懒初始化值
android·开发语言·kotlin
枣伊吕波2 小时前
第六节第二部分:抽象类的应用-模板方法设计模式
android·java·设计模式
萧然CS2 小时前
使用ADB命令操作Android的apk/aab包
android·adb
肥肥呀呀呀5 小时前
在Flutter上如何实现按钮的拖拽效果
前端·javascript·flutter
_extraordinary_6 小时前
MySQL 事务(二)
android·数据库·mysql
鸿蒙布道师10 小时前
鸿蒙NEXT开发动画案例5
android·ios·华为·harmonyos·鸿蒙系统·arkui·huawei
橙子1991101615 小时前
在 Kotlin 中什么是委托属性,简要说说其使用场景和原理
android·开发语言·kotlin
androidwork15 小时前
Kotlin Android LeakCanary内存泄漏检测实战
android·开发语言·kotlin
WDeLiang15 小时前
Flutter - UIKit开发相关指南 - 导航
flutter·ios·dart