[Flutter]配置pubspec.yaml

pubspec.yaml 文件是 Dart 和 Flutter 项目的核心配置文件,用于管理项目的依赖、版本、元数据等。

下面是 pubspec.yaml 文件中常见项的示例和说明:

name: my_private_package
#version: 0.0.1 # 开发一个Dart包或Flutter库,用于其他项目引用,只需要关注版本
version: 1.0.1+10 # 开发一个Flutter应用,并计划将其发布到应用商店,建议使用 1.0.1+10 格式来增加构建号。
description: A new Flutter package for private use.
homepage: https://example.com

#repository: https://github.com/yourusername/my_private_package
#issue_tracker: https://github.com/yourusername/my_private_package/issues
#documentation: https://yourusername.github.io/my_private_package/

environment:
  sdk: '>=2.12.0 <3.0.0'
  flutter: '>=1.20.0'

dependencies:
  flutter:
    sdk: flutter
  #http 表示项目依赖于 http 包,版本至少为 0.13.3 但低于下一个主版本。
  http: ^0.13.3

dev_dependencies:
  #flutter_test,这是用于 Flutter 测试的依赖,通常只在开发过程中使用。
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true
  assets:
    - images/a_dot_burr.jpeg
    - images/a_dot_ham.jpeg

  fonts:
    - family: Schyler
      fonts:
        - asset: fonts/Schyler-Regular.ttf
        - asset: fonts/Schyler-Italic.ttf
          style: italic

1.基本配置

  • name: 包的名称,这是你的包在 Dart ecosystem 中的唯一标识符。
  • version: 包的版本号,遵循语义化版本规则。

    对于 Flutter 应用,通常在发布到应用商店时,会包括构建号(build number),这有助于追踪和管理不同的构建,尤其是当你需要频繁更新应用且保持相同的版本号时。这种情况下,version: 1.0.1+12 是很常见的配置方式。

    对于开发的 Dart 包或 Flutter 库,通常只需要关注到 MAJOR.MINOR.PATCH,因为包的发布更侧重于 API 的改动和功能更新,而不是构建的具体次数。因此,包通常只配置为 version: 1.0.1。在包管理平台(如 pub.dev)上,构建号的概念并不适用,因为每次发布都是围绕功能和修复的变化。

  • description: 包的简短描述,帮助用户了解包的用途。
  • homepage: 包的主页 URL,通常是项目的仓库或者文档的链接。
  • repository: 项目的仓库地址,常用于指定 GitHub/GitLab/Bitbucket 等的直接链接。
  • issue_tracker: 问题跟踪系统的链接,通常指向 GitHub Issues 页面。
  • documentation: 包的文档页面 URL。

2.环境设置

  • environment: 指定包需要的 Dart 和 Flutter SDK 的版本。
    • sdk: Dart SDK 的版本范围。
    • flutter: Flutter SDK 的版本范围。

(1).查询 Dart SDK 版本

官方:

语言演变:Language evolution | Dart

Dart 官网:Dart programming language | Dart

Dart 的源代码 GitHub:GitHub - dart-lang/sdk: The Dart SDK, including the VM, dart2js, core libraries, and more.

Dart 包管理器的官方网站:  The official repository for Dart and Flutter packages.

本地:

要查看你当前安装的 Dart SDK 版本,可以在命令行中运行以下命令:

$ dart --version

(2).查询 Flutter SDK 版本

官方:

Flutter 官网: Flutter - Build apps for any screen

Flutter 源码仓库: GitHub - flutter/flutter: Flutter makes it easy and fast to build beautiful apps for mobile and beyond

Flutter 版本:

Releases · flutter/flutter · GitHub

Archive | Flutter

本地:

要查看你当前安装的 Flutter SDK 版本,可以在命令行中运行以下命令:

$ flutter --version

或者使用更简洁的信息输出:

$ flutter doctor

flutter doctor 命令不仅显示 Flutter SDK 的版本,还会检查你的环境配置是否适合 Flutter 应用开发,包括 Android 和 iOS 的工具链等信息。

3.依赖管理

  • dependencies: 包依赖的其他包和版本。
    • 可以指定版本号,版本范围,或者使用特定的版本控制系统的链接(如 Git)。
  • dev_dependencies: 仅在开发过程中需要的依赖,这些依赖不会在最终的产品中被包含。
  • dependency_overrides: 用于临时重写依赖版本,常用于解决依赖冲突。

依赖版本查询:The official repository for Dart and Flutter packages.

(1).精确版本

指定一个包的精确版本号,确保总是使用这个特定的版本。

dependencies:
  http: 1.2.1

 这种方式告诉 pub 包管理器,你想使用 http 包的 1.2.1 版本,不高于也不低于这个版本。

(2).范围约束

使用版本范围来指定可以接受的最低版本和最高版本。

dependencies:
  http: '>=0.12.0 <0.14.0'

 这表示 http 包可以是任何 0.12.0 到 0.14.0(不包括 0.14.0)之间的版本。这种方式允许某个范围内的版本更新,有助于获取包的最新修复,同时避免引入重大变更。

(3).Caret 符号 (^)

Caret 约束允许更新到当前主版本号内的最新版本。

dependencies:
  http: ^0.13.3

这意味着可以使用 0.13.3 及以上版本,但是必须低于 0.14.0。此约束允许非破坏性的更新(通常是小修小改和补丁),这是最常用的版本约束方式,因为它能提供一定级别的灵活性和安全性。

(4).任意版本

如果不指定版本号,或者使用星号 (*),表示接受任何版本的包。

dependencies:
  http: any

或者

dependencies:
  http: '*'

这将匹配任何可用的版本。这种方式在实际开发中并不推荐,因为它可能导致未知的兼容性问题。

(5).Git 依赖

可以直接从 Git 仓库中引入依赖,这在使用尚未发布的包或者需要特定提交的版本时非常有用。

dependencies:
  http:
    git:
      url: https://github.com/flutter/http.git
      ref: main

 你可以通过 ref 指定分支名、标签或者提交的 SHA。如果省略 ref,默认将使用主分支。

(6).本地路径依赖

如果你正在本地开发一个包,或者需要对某个包进行调试,你可以通过指定路径来依赖本地的包。

dependencies:
  local_package:
    path: ../path/to/local_package

这种方法允许你直接依赖本地文件系统中的包,非常适合本地开发和测试。

4.Flutter 特定配置

  • flutter:
    • uses-material-design: 如果为 true,则包括 Material Design 相关的资源,例如图标等。
    • assets: 列出应包含在应用中的资源文件。
    • fonts: 定义应用要使用的字体,包括字体文件和权重。

在Flutter中,uses-material-design: true 配置项在 pubspec.yaml 文件中的作用是允许项目使用Material Design库中的图标资源。这是因为Material Design图标不是自动包含在Flutter应用中的,而是需要通过此配置项来显式启用。

如果不配置 uses-material-design: true

  • Material Design图标:你将无法直接使用Material Design图标。如果你尝试使用 Icons 类来引用图标,将会得到一个占位符图标或者没有任何图标显示。
  • Material Design组件:你仍然可以使用Material Design的组件,如 ScaffoldAppBarFlatButtonTextButton 等。这些组件不依赖于 uses-material-design: true 配置项,因为它们是Flutter框架的一部分,而不是资源文件。

这里assets/fonts详细用法可参考另一文:Flutter使用flutter_gen管理资源文件-CSDN博客

猜你喜欢

转载自blog.csdn.net/u012881779/article/details/138489797