文章目录

  • 简介
  • pubspec.yaml
  • get packages
  • 使用packages
  • 升级依赖
  • 总结

简介

java中使用jar包来封装有用的功能,然后将其分发到maven仓库中,供其他人使用。同样的在dart中也有类似的概念叫做packages。packages就是可以用来共享的软件包,可以包含libraries和tools。

你可以在pub.dev网站中查到dart中所有的共享packages的信息。 那么怎么在一个dart项目中使用这些packages呢?

pubspec.yaml

简单点讲,一个dart的package就是包含pubspec.yaml的目录。pubspec.yaml是一个描述文件,用来表明该package的元信息,包括当前package的名字,版本号和依赖信息等。

要想使用pub.dev上的packages,只需要在pubspec.yaml引入对应的依赖即可。

我们举个例子:

name: app2
description: a demo app
version: 1.0.0+1environment:sdk: ">=2.7.0 <3.0.0"dependencies:image_picker: ^0.6.7+22video_player: ^0.10.12+5

这里我们的引入了两个依赖包,分别是image_picker和video_player。

get packages

当我们修改了pubspec.yaml之后,其实对应的package并没有下载到本地来,还需要通过下面的命令来下载对应的packages:

 cd <path-to-my_app>dart pub get

dart pub get会根据pubspec.yaml中配置的内容下载对应的包,并放置在系统缓存中。

在Mac或者Linux系统中,这个缓存目录的地址是:~/.pub-cache,在windows中这个目录地址是:%LOCALAPPDATA%\Pub\Cache。

当然,你也可以通过设置PUB_CACHE来更换这个地址。

如果你依赖的包又依赖其他的包的话,其他依赖包也会被下载下来。

当下载完依赖包之后,dart会在 .dart_tool/目录中创建一个 package_config.json文件,用来表示当前项目和系统缓存包的映射关系。

使用packages

万事俱备,只欠东风。现在包也有了,剩下就是使用了。

使用libary可以用关键字import。如果是dart SDK中的包,则以dart:开头:

 import 'dart:html';

如果是第三方包,则以package: 开头:

import 'package:test/test.dart';

引入的libary还可以被重命名:

import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;// Uses Element from lib1.
Element element1 = Element();// Uses Element from lib2.
lib2.Element element2 = lib2.Element();

还可以使用show和hide引入部分library:

// Import only foo.
import 'package:lib1/lib1.dart' show foo;// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;

默认情况下,引入的包是初始加载的,如果某些包特别大,或者你想要在使用的时候再进行加载,则可以使用deferred关键字进行延时加载:

import 'package:greetings/hello.dart' deferred as hello;

在使用的时候,需要显示调用loadLibrary() 方法,来加载对应的library:

Future<void> greet() async {await hello.loadLibrary();hello.printGreeting();
}

升级依赖

在第一次运行dart pub get 之后,dart会创建一个pubspec.lock文件,用来锁定依赖包的版本号,如果是在团队协作中,这个lock文件是特别有用的,它可以保证团队中所有成员使用的都是同一个版本的依赖包。

当你想升级对应的依赖的时候,可以使用dart pub upgrade命令,对依赖包进行升级。

dart pub upgrade会根据最新的可用包来生成最新的lock文件。

当然,你也可以指定升级某个特定的依赖包:

dart pub upgrade image_picker

要想查看最新依赖包的最新版本,可以使用:

dart pub outdated

总结

以上就是dart中packages的使用。

本文已收录于 http://www.flydean.com/09-dart-packages/

最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

dart系列之:在dart中使用packages相关推荐

  1. dart系列之:在dart中使用数字和字符串

    文章目录 简介 数字 字符串 StringBuffer 总结 简介 要想熟悉一种语言,最简单的做法就是熟悉dart提供的各种核心库.dart为我们提供了包括dart:core,dart:async,d ...

  2. dart系列之:在dart中使用生成器

    文章目录 简介 两种返回类型的generator Stream的操作 总结 简介 ES6中在引入异步编程的同时,也引入了Generators,通过yield关键词来生成对应的数据.同样的dart也有y ...

  3. dart系列之:dart语言中的特殊操作符

    dart系列之:dart语言中的特殊操作符 文章目录 简介 普通操作符 类型测试操作符 条件运算符 级联符号 类中的自定义操作符 总结 简介 有运算就有操作符,dart中除了普通的算术运算的操作符之外 ...

  4. dart系列之:浏览器中的舞者,用dart发送HTTP请求

    文章目录 简介 发送GET请求 发送post请求 更加通用的操作 总结 简介 dart:html包为dart提供了构建浏览器客户端的一些必须的组件,之前我们提到了HTML和DOM的操作,除了这些之外, ...

  5. dart系列之:dart代码规范实践指南

    文章目录 简介 命名规则 import中的顺序 格式化 总结 简介 每种语言都有自己的代码风格,这种代码风格是跟语言特性息息相关的.如果在编码的过程中遵循这种统一的编码规则,会给我们的业务带来非常多的 ...

  6. dart系列之:手写Library,Library编写实践

    文章目录 简介 使用part和part of src中的文件 package中的lib文件 总结 简介 Library是dart用来组织代码的一种非常有用的方式,通过定义不同的Library,可以将非 ...

  7. dart系列之:你的地盘你做主,使用Extension对类进行扩展

    文章目录 简介 dart中extension的使用 API冲突 extention的实现 总结 简介 一般情况要扩展一个类,需要继承这个类,这是在大多数java或者其他面向对象语言中要做的事情. 但是 ...

  8. dart系列之:HTML的专属领域,除了javascript之外,dart也可以

    文章目录 简介 DOM操作 CSS操作 处理事件 总结 简介 虽然dart可以同时用作客户端和服务器端,但是基本上dart还是用做flutter开发的基本语言而使用的.除了andorid和ios之外, ...

  9. dart系列之:创建Library package

    文章目录 简介 Library package的结构 导入library 条件导入和导出library 添加其他有效的文件 library的文档 发布到pub.dev 总结 简介 在dart系统中,有 ...

最新文章

  1. 507. Perfect Number(Python)
  2. C语言经典算法 11-20
  3. 2021常用单细胞数据库整理汇总
  4. Page directive: illegal to have multiple occurrences of contentType with different values
  5. C++总结篇(1)命名空间及引用
  6. 嘉年华专访 | 国际上智能运维研究
  7. POJ 1639 Picnic Planning:最小度限制生成树
  8. 迅捷cad_迅捷数组
  9. Grunt-jsdoc生成JS API文档
  10. visio图形包解压
  11. mouse是计算机软件吗,手机控制电脑软件(EasyMouse)手机端
  12. iOS小知识:nib本地化、图片本地化字符串本地化(APP 内的本地化切换)
  13. CCF关于举办2019年NOI教师培训(首师附中)的通知
  14. 洛谷算法题单:模拟与高精度例题(上)
  15. 往word表中写数据
  16. 大雄宝殿的“大雄”是什么意思
  17. 电脑无法安装软件打不开计算机,电脑刚安装软件打不开怎么办
  18. 一场美好的婚礼对女孩子来说意味着什么?
  19. 深入浅出FPGA-4-数字电路设计基础
  20. 微信公众平台测试号申请

热门文章

  1. [计算机网络]探索ICMP协议
  2. android判断参数非空,Android Studio注释模板Live Templates参数获取不到为null的一些
  3. FFmpeg基本组成
  4. STL 之随机访问迭代器
  5. 快速发包突破ARP防火墙思路
  6. TextureView
  7. Kafka消息序列化和反序列化(上)
  8. 低代码音视频开发训练营
  9. Firefox年内将默认启用AV1解码
  10. 《Go语言圣经》学习笔记 第九章 基于共享变量的并发