当前位置: 首页 > article >正文

最全的Flutter中pubspec.yaml及其yaml 语法的使用说明

前言

我们知道在Flutter项目中,依赖版本管理是通过pubspec.yaml的形式,因此了解yaml的一些简单语法和如何配置使用pubspec.yaml 也是相当的重要,下文会对yaml的使用进行简单介绍

什么是yaml

YAML(YAML Ain’t Markup Language)是一种易于阅读的、用于表示结构化数据的序列化格式。因为其语法简洁且可读性强,常用于配置文件和数据交换应用程序中。我们的flutter便是其使用的场景之一

相比较其他方式的配置文件的特点如下

  • 可读性强: YAML 的设计目标之一就是提高可读性,相比于 JSON 和 XML,其格式更接近于日常书写的文本,简单明了。
  • 缩进表示结构: YAML 使用缩进来表示数据的层级结构,而不是像 JSON 那样使用大括号和方括号,因此更清晰
  • 数据表示: YAML 和json 类似也可以表示多种数据结构,如标量(字符串、数值)、列表(数组)、字典(键值对)等。
  • 使用范围之广: YAML 被广泛应用于多种编程语言和框架中,特别是在配置文件中,如 Python 的 PyYAML、Ruby 的 Psych 和 Java 的 SnakeYAML,以及Flutter 的pubspec.yaml

pubspec.yaml 中常见字段使用

pubspec.yaml 是 Dart 和 Flutter 项目的配置文件,其中定义了项目的名称、版本、依赖项、环境等信息。虽然它本身是一个静态的配置文件,不支持像编程语言那样的“内部方法”,但其格式和配置选项本身可以视为“方法”,用于有效地管理项目配置。
1. 项目元数据
name: 指定项目名称,通常是小写字母和下划线。用于在 Dart 和 Flutter 生态系统中标识项目。

name: my_project

description: 项目的描述信息,帮助其他开发者理解项目的用途。

description: A new Flutter project.

version: 项目的版本号,格式为 x.y.z+build。其中 x.y.z 是语义化版本号,+build 是可选的构建号。

version: 1.0.0+1

2. 环境配置
environment: 指定项目所需的 Dart SDK 版本范围,以确保项目在兼容的 SDK 上运行。

environment:
  sdk: ">=2.12.0 < 3.0.0"

3. 依赖项管理
dependencies: 列出项目的运行时依赖项,包括第三方库和 Flutter SDK。

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2

dev_dependencies: 列出开发环境所需的依赖项,通常用于测试、构建工具等。

dev_dependencies:
  flutter_test:
    sdk: flutter
  mocktail: ^0.3.0  

4. Flutter 特定配置
flutter: 包含 Flutter 项目特定的配置选项。

flutter:
  uses-material-design: true # uses-material-design: 指定项目是否使用 Material Design 组件。

5. 资源和资产
assets: 指定项目中需要包含的资源文件,如图像、音频等。

assets:
  - assets/images/
  - assets/audio/

fonts: 配置自定义字体,定义字体家族及其对应的字体文件路径。

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

pubspec.yaml中更多字段说明

1. homepage
说明: 指定项目的主页 URL。
用途: 提供项目的更多信息链接,通常指向项目的官方网站或代码仓库。

homepage: https://example.com

2. repository
说明: 项目源代码的仓库 URL。
用途: 对于开源项目,提供代码仓库的位置。

repository: https://github.com/username/project

3. issue_tracker

说明: 项目的问题跟踪器 URL。
用途: 指向项目的错误报告或问题跟踪页面。

issue_tracker: https://github.com/username/project/issues

4. documentation
说明: 项目的文档 URL。
用途: 指向项目的文档页面,帮助开发者更好地使用和理解项目。

documentation: https://example.com/docs

5. publish_to
说明: 指定包发布的目标。
用途: 如果设置为 “none”,表示该包不应发布到 pub.dev。

publish_to: none

6. dependency_overrides
说明: 用于临时覆盖依赖项的版本。
用途: 在特定情况下需要调整依赖版本时使用,不建议长期使用。

dependency_overrides:
  some_package: 1.2.3

7. executables
说明: 定义要作为可执行文件导出的 Dart 脚本。
用途: 在 Dart 项目中,指定哪些脚本可以作为命令行工具使用。

executables:
  my_tool: bin/my_tool.dart

如何使用
激活包: 在项目根目录下运行以下命令,激活你的包。

pub global activate --source path .

运行命令: 激活后,你可以在命令行中使用 my_tool 命令。

my_tool # 可以当成dart脚本使用

8. transformers
说明: 定义项目中使用的编译器转换器。
用途: 在构建过程中,应用指定的代码转换器。

transformers:
  - some_transformer

9. platforms
说明: 指定支持的平台。
用途: 定义包或项目支持的平台类型,如 flutter, web, vm。

platforms:
  flutter:
  web:
  vm:

yaml基本语法

YAML 也是有自己的基本语法的,并且相比较json它更灵活,掌握其一些简单的语法才可以在pubspec.yaml 灵活运用
1. 标量
标量是 YAML 中最基本的数据类型,可以是字符串、布尔值、整数、浮点数等。

name: smile
age: 18
is_student: true

其类似json如下格式

{
"name":"smile",
"age":18,
"is_student":true
}

2. 列表
使用连字符 - 表示列表(数组)。

fruits:
  - apple
  - banana
  - pear

其类似json如下格式

 {
 "fruits":["apple","banana","pear"]
}

3. 字典
字典使用键值对表示(Map)

people:
  name: smile
  age: 18
  sex: boy

其类似json如下格式

{
"people":{
"name":"smile",
"age":18,
"sex":boy
}
}

4.其他语法
但是yaml比json更强大比如下面场景:
多行字符串
多行字符串可以使用 | 或 > 来表示。| 保留换行符,而 > 将换行符替换为空格。

# 可以用来做注释
description: |
  This is a multi-line
  string that preserves
  line breaks.

short_description: >
  This is a multi-line
  string that folds lines.

锚点和引用
YAML 中的引用和锚点是一种很好用的功能,可以避免重复定义相同的数据结构。它们允许你在 YAML 文档中定义一个数据块,并在其他地方引用这个数据块。这对于复杂的配置文件特别有用,因为它可以减少冗余和维护成本,同时也提高配置文件的可读性

锚点和引用的基础用法
锚点 (&): 用于定义一个数据块,并为它指定一个名称,也可以叫做别名
引用 (*): 用于引用之前定义的锚点。
他们配合使用如下:

default_settings: &default
  host: localhost
  port: 3306
  user: admin

development:
  <<: *default
  database: dev_db

production:
  <<: *default 
  host: prod.example.com
  database: prod_db

其中 <<: 为yaml的合并键其作用就是将我们定义的default_settings合并到development下面类似这样,如果是相同的key 则合并后会被覆盖掉:

development:
  host: localhost
  port: 3306
  user: admin
  database: dev_db

复杂键
yaml中还存在复杂键,这种使用场景非常少可以了解下,类似三元运算

? 
  - key1
  - key2
: "value"

数组作为键: 如果数组 [key1, key2] 被用作键,其对应的值是 “value”。

? 
  name: complex
  type: object
: "This is a complex key"

对象作为键: 如果一个对象 {name: complex, type: object} 被用作键,对应的值是 “This is a complex key”。

end

以上基本上把flutter中的pubspec.yaml使用方法和yaml语法基本讲完了,看完这篇博客,基本上就可以上手开发配置了!


http://www.kler.cn/a/383699.html

相关文章:

  • 高校实验室安全巡检系统设计与实现(源码+定制+开发)高校实验室巡检系统、实验室安全管理平台、实验室安全监控系统、智能实验室巡查系统、高校实验室风险管理
  • 云计算Openstack 虚拟机调度策略
  • 不愧是阿里巴巴最新开源的Java面试笔记,30万字精华总结 + 面试1300问附答案整理
  • 第十九周机器学习笔记:GAN的数学理论知识与实际应用的操作
  • 5.Java 数组(一维数组、二维数组、数组实例实操)
  • rabbitMQ RabbitTemplate 发送消息
  • uniapp组件实现省市区三级联动选择
  • 【Unity基础】粒子系统与VFX Graph的区别
  • 【LeetCode】【算法】226. 翻转二叉树
  • echarts图表的使用(常用属性)
  • 数据特征工程:如何计算Teager能量算子(TEO)? | 基于SQL实现
  • 使用LoRA 对千问70B模型进行微调
  • Jupyter Notebook添加kernel的解决方案
  • 汇聚全球前沿科技产品,北京智能科技产业展览会·世亚智博会
  • 人工智能驱动金融市场:民锋智能分析引领精准投资
  • Java:多态的调用
  • 使用 Spring Security 和 JWT 实现安全认证机制
  • MySQL记录锁、间隙锁、临键锁(Next-Key Locks)详解
  • PostgreSQL (八) 创建分区
  • 如何选择适合CMS运行的服务器?
  • MySQL 8.0在windows环境安装及配置
  • STM32项目---水质水位检测
  • nuPlan最新SOTA,香港科技大学发布基于学习决策范围内的规划PlanScope
  • Java 网络编程(一)—— UDP数据报套接字编程
  • mysql数据同步到sql server
  • SpringBoot在线教育系统:云部署策略