Flutter pubspec.yaml 使用方式

ops/2025/1/11 9:15:26/

Flutter pubspec.yaml 使用方式

pubspec.yaml 是 Flutter 项目中最重要的配置文件之一,用于管理应用的基本信息、依赖项、资源以及构建配置等内容。


1. 基本结构和字段

基本信息

name: my_flutter_app        # 应用的名称
description: A new Flutter project  # 项目的描述
version: 1.0.0+1           # 应用的版本号和内部版本号
homepage: https://example.com  # 项目的主页 (可选)
repository: https://github.com/my_flutter_app # 用于提供项目的源代码仓库地址 (可选)
publish_to: "none"         # 是否发布到 Pub (用于私有项目)

环境要求

environment:sdk: ">=2.19.0 <3.0.0"   # Dart SDK 的版本范围flutter: ">=3.7.0"       # Flutter SDK 的版本范围 (可选)

2. 添加依赖项

普通依赖

用于添加 Dart 和 Flutter 包依赖:

dependencies:flutter:sdk: flutter          # Flutter SDK 必须的核心包http: ^0.15.0           # 添加第三方依赖包及其版本provider: ^6.0.0        # 依赖其他库 (Pub.dev 上的库)

开发依赖

仅在开发环境中使用的依赖:

dev_dependencies:flutter_test:sdk: flutter          # 测试框架lint: ^2.0.0            # 代码分析工具

依赖本地包

引用本地的 Dart 包:

dependencies:my_local_package:path: ../my_local_package

依赖 Git 仓库

引用托管在 Git 仓库中的包:

dependencies:my_git_package:git:url: https://github.com/username/repository.gitref: main          # 指定分支path: packages/package_name  # 指定子目录 (可选)

依赖特定的 SDK

引用基于 Dart 或 Flutter SDK 的包:

dependencies:flutter:sdk: flutter

3. 配置资源

静态资源

添加应用使用的图像、字体等资源:

flutter:assets:- assets/images/logo.png      # 单个资源文件- assets/images/              # 整个文件夹

自定义字体

为项目添加自定义字体:

flutter:fonts:- family: Robotofonts:- asset: assets/fonts/Roboto-Regular.ttf- asset: assets/fonts/Roboto-Bold.ttfweight: 700

4. 配置插件

添加平台特定的依赖(iOS、Android 等):

flutter:plugin:platforms:android:package: com.example.mypluginpluginClass: MyPluginios:pluginClass: MyPlugin

5. 设置执行脚本(Flutter 3.7+ 支持)

支持 scripts 字段定义自定义脚本:

scripts:build_runner: flutter packages pub run build_runner build

运行命令:

flutter pub run scripts build_runner

6. 配置平台支持

启用或禁用某些平台支持:

flutter:module:androidPackage: com.example.my_flutter_appiosBundleIdentifier: com.example.myFlutterAppgenerate:platforms:- android- ios- web

7. 配置最低 SDK 要求

environment:flutter: ">=3.3.0"

8. 提升构建效率:缓存与可选字段

启用 Dart 分析器规则

analyzer:exclude:- test/mock_data.dart       # 排除文件

配置缓存依赖

避免重新下载 Pub 包,覆盖项目中某个依赖的版本。当某些包依赖的库版本冲突时,可以通过 dependency_overrides 来强制使用指定版本。

dependency_overrides:http: ^0.15.0

9. 自定义构建版本号

版本号格式为 x.y.z+build_number,例如:

version: 1.2.3+10
  • x.y.z:语义化版本号(主版本号、次版本号和补丁版本号)。
  • build_number:内部构建版本号。

10. 自动生成的注释区域

Flutter 自动生成一些注释内容,建议保留以便参考。例如:

# To add assets to your application, add an assets section, like this:
# assets:
#   - assets/images/a_dot_burr.jpeg
#   - assets/images/a_dot_ham.jpeg

11. 插件(国际化)

在某些项目中,flutter_intl 插件用于国际化配置:

flutter_intl:enabled: trueuse_recommended_settings: true

http://www.ppmy.cn/ops/149124.html

相关文章

Allure 集成 pytest

Allure 是一个强大的测试报告工具&#xff0c;与 pytest 集成可以生成详细的测试报告&#xff0c;包括测试步骤、测试数据、截图、错误堆栈等。 1. 安装 Allure 和相关依赖 安装 pytest-allure-adaptor 插件&#xff1a; pip install allure-pytest确保本地已安装 Allure 工具。…

poi-tl+kkviewfile实现生成pdf业务报告

需求背景&#xff0c;需要把ai生成的一些业务数据&#xff0c;生成一份pdf报告 需求分析 简单来说&#xff0c;就是json生成pdf的方案。 直接生成pdf。适合一些pdf样式简单的场景&#xff0c;一般就是纯文本按序渲染&#xff0c;或者是纯表格。如果需要一些复杂的排布&#x…

Java 基于微信小程序的高校科研团队管理系统设计与实现(附源码,部署,文档

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

关于TCP/IP五层结构的理解

关于TCP/IP五层结构的理解 TCP/IP五层模型 是目前被广泛采用的一种模型,我们可以将 TCP / IP 模型看作是 OSI 七层模型的精简版本&#xff0c;由以下 5 层组成&#xff1a; 1. 应用层&#xff1a;应用层是体系结构中的最高层&#xff0c;定义了应用进程间通信和交互的规则。本…

excel前缀和(递增求和)

方法一&#xff1a;https://www.zhihu.com/zvideo/1382164996659515392?utm_id0 假设输入数据在B2:B10&#xff0c;选中单元格C2&#xff0c;输入SUM(B2:B2&#xff0c;然后选中其中的B2&#xff0c;按F4&#xff08;或者直接输入SUM(B$2:B2&#xff09;&#xff0c;回车确认&…

Elasticsearch复习笔记

ElasticSearch 倒排索引 keyword id &#xff08;倒排索引&#xff09; name 1001 zhang 1002 基础操作 索引操作 创建索引 index就是等于database &#xff08;索引&#xff09;发送put请求 &#xff08;不能使用功能post&#xff09;/shoping 就是创建索引 获取索引详细…

常用字符串处理函数

常用字符串处理函数 strcspn函数原型参数说明返回值使用示例注意事项 strpbrk函数原型参数说明返回值使用示例 strcasecmp函数原型参数说明返回值使用示例注意事项 strcspn strcspn 是一个 C 和 C 标准库函数&#xff0c;用于计算一个字符串中不包含任何指定字符的最长前缀的长…

[读书日志]从零开始学习Chisel 第五篇:Scala面向对象编程——类继承(敏捷硬件开发语言Chisel与数字系统设计)

3.3类继承 3.3.1Scala中的类继承 为了节省代码量和反映实际各种类之间的联系&#xff0c;通常采取两种策略&#xff0c;包含和继承。包含是说明一个类中包含另一个类的对象&#xff0c;但两者之间没有必然联系。继承是从一个宽泛的类派生出更具体的类的过程&#xff0c; 被继…