[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.3dev_dependencies:#flutter_test,这是用于 Flutter 测试的依赖,通常只在开发过程中使用。flutter_test:sdk: flutterflutter:uses-material-design: trueassets:- images/a_dot_burr.jpeg- images/a_dot_ham.jpegfonts:- family: Schylerfonts:- asset: fonts/Schyler-Regular.ttf- asset: fonts/Schyler-Italic.ttfstyle: 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.gitref: 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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/6972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux-03

cat 由第一行开始显示文件内容 tac 从最后一行开始显示&#xff0c;可以看出 tac 是 cat 的倒着写 nl 显示的时候&#xff0c;顺道输出行号 more 一页一页的显示文件内容 less 与 more 类似&#xff0c;但是比 more 更好的是&#xff0c;他可以往前翻页 (空格翻页 退出q命令) h…

Codeforces Round 943 (Div. 3) A~E

A. Maximize? Problem - A - Codeforces 给定x求出使这个式子最大的y&#xff1a; 不用想复杂直接循环枚举即可。 #include<bits/stdc.h> using lllong long; ll n,m; void solve() {int x;std::cin>>x;ll ans0,y;for(int i1;i<x;i){if(std::__gcd(i,x)i>a…

Android 巧用putBinder方法传递大文件

使用Intent传递数据大家都知道&#xff0c;但是如果你使用Intent传递大于1Mb的数据时&#xff0c;就一定会报如下的错误&#xff1a; Caused by: android.os.TransactionTooLargeException: data parcel size 1049112 bytes 就是说你的传输数据太大了&#xff0c;当前的大小达…

价值2000元的优质产品经理证书免费考啦(含题库)

小李哥今天带来的的是Pendo家出的2张免费产品经理证书(送Credly徽章&#xff0c;可挂LinkedIn)&#xff0c;原价共计300刀(2000人民币)&#xff0c;使用小李哥文章末尾中的网址可以免费考试&#xff0c;同时小李哥给大家做了题库&#xff0c;欢迎关注小李哥领取&#xff0c;10分…

【个人博客搭建】(17)使用FluentValidation 参数校验

FluentValidation 是一个用于 .NET 的开源验证库&#xff0c;它提供了一种流畅的接口和强类型验证规则&#xff0c;使得验证逻辑表达得更加清晰和简洁。&#xff08;Apache-2.0&#xff09; FluentValidation 的主要作用包括&#xff1a; 提高代码可读性&#xff1a;通过使用 F…

C++基础——构造函数

当我们创建对象的时候,这个对象应该有一个初始状态&#xff0c;当对象销毁之前应该销毁自己创建的一些数据。对象的初始化和清理也是两个非常重要的安全问题&#xff0c;一个对象或者变量没有初始时&#xff0c;对其使用后果是未知&#xff0c;同样的使用完一个变量&#xff0c…

微信小程序开发实战:运动数据轻松获取,让健康生活触手可及【代码示例】

微信小程序开发实战&#xff1a;运动数据轻松获取&#xff0c;让健康生活触手可及【代码示例】 基础概念与API介绍微信运动数据接口权限申请 实战步骤1. 配置权限2. 请求用户授权3. 解密运动数据4. 后端解密逻辑 安全性与性能优化结语与讨论 在移动互联网时代&#xff0c;健康管…

AcWing 827. 双链表——算法基础课题解

AcWing 827. 双链表 题目描述 实现一个双链表&#xff0c;双链表初始为空&#xff0c;支持 5 种操作&#xff1a; 在最左侧插入一个数&#xff1b;在最右侧插入一个数&#xff1b;将第 k 个插入的数删除&#xff1b;在第 k 个插入的数左侧插入一个数&#xff1b;在第 k 个插…

【Github】直接引用Github仓库中的图片

用picgo能够上传图片、复制链接。 那如果我已经将图片通过其他方法上传到Github仓库中&#xff0c;难道还要上传一次&#xff1f; 不用&#xff01; 步骤 1.打开仓库中要访问的图片 2.复制此时浏览器链接: https://github.com/jaxhur/image/blob/main/image-2022082410480713…

Navicat连接远程服务器的MySQL(局域网)

Navicat如何连接远程服务器的MySQL_navicat远程连接mysql-CSDN博客 我的电脑上运行MySQL的服务器端 正好在我哥家&#xff0c;在他的电脑上安装Navicat 两台电脑连接他家的wifi&#xff0c;那么就是处在同一局域网中&#xff0c;把防火墙都关掉&#xff0c;可以互相ping通。…

elementUi中的el-table合计行添加点击事件

elementUi 文档中&#xff0c;合计行并没有点击事件&#xff0c;这里自己实现了合计行的点击事件。 created() {this.propertyList [{ property: order, label: 序号 },{ property: deptName, label: 单位名称 },{ property: contentPublishQuantity, label: 文章数量 },{ pro…

解锁WSL下Docker使用

简介&#xff1a;Windows Subsystem for Linux&#xff08;简称WSL&#xff09;是一个在Windows 10上能够运行原生Linux二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层。正常情况下&#xff0c;WSL安装完成后直接使用docker会抛出以下报错&#xff1a; Cannot conn…

谷歌推广和seo留痕具体怎么操作?

留痕跟谷歌推广其实是一回事&#xff0c;你能在谷歌上留痕&#xff0c;其实就是推广了自己的信息&#xff0c;本质上留痕就是在各大网站留下自己的记录&#xff0c;这个记录可以是品牌信息&#xff0c;联系方式&#xff0c;看你想留下什么 如果要问自己怎么操作&#xff0c;正常…

微信公众号排名 SEO的5个策略

随着微信公众号在社交媒体领域的持续发展和普及&#xff0c;如何提升公众号的搜索排名&#xff0c;成为许多运营者关注的焦点。公众号排名SEO&#xff0c;即针对微信公众号进行搜索引擎优化&#xff0c;旨在提高公众号在搜索结果中的曝光率和点击率。下面&#xff0c;我们将深入…

数据库中虚拟表和临时表的区别?

虚拟表&#xff08;Virtual Table&#xff09;和临时表&#xff08;Temporary Table&#xff09;在数据库系统中都用于处理暂时性的数据存储需求&#xff0c;但它们的概念和用途有所不同&#xff1a; 虚拟表&#xff08;通常是视图View&#xff09;&#xff1a; 虚拟表&#…

银行电子凭证技术规范

银行电子凭证技术规范 1 范围 本文件规定了银行电子凭证的文件、数据与样式、系统逻辑框架、生成、通信传输和安全要求&#xff0c;以 及验证方法。 本文件适用于银行电子凭证数据实例与版式文件的开具、传输、接收和应用。 2 规范性引用文件 下列文件中的内容通过文中的规范…

如何复制本地docker镜像到其他主机

&#xff08;1&#xff09;打包镜像 比如我要复制的镜像是grafana的镜像 docker images 这里我把打包的镜像放在了根~目录下&#xff0c;如截图所示&#xff1a; docker save grafana/grafana:latest -o ~/grafana.jar &#xff08;2&#xff09;移动镜像 scp命令拷贝镜像到目标…

标贝数据采集标注在自动驾驶场景中落地应用实例

AI数据服务作为人工智能和机器学习的基础&#xff0c;在自动驾驶领域中有着重要地位。与其他人工智能应用场景相比&#xff0c;自动驾驶的落地场景相对复杂&#xff0c;想要让汽车本身的算法做到处理更多、更复杂的场景&#xff0c;就需要运用大量场景化高质量AI数据做支撑。标…

kafka日志存储

前言 kafka的主题(topic)可以对应多个分区(partition)&#xff0c;而每个分区(partition)可以有多个副本(replica)&#xff0c;我们提生产工单创建topic的时候也是要预设这些参数的。但是它究竟是如何存储的呢&#xff1f;我们在使用kafka发送消息时&#xff0c;实际表现是提交…

uniapp遍历数组对象的常见方法

在 UniApp 中&#xff0c;遍历数组对象的方法与在普通 JavaScript 中是相同的。UniApp 是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;因此你可以使用 Vue.js 和 JavaScript 的语法来遍历数组对象。 以下是一些常见的遍历数组对象的方法&#xff1a; 使用 for 循环 …