简介
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: app2description: a demo appversion: 1.0.0+1environment: sdk: ">=2.7.0 <3.0.0"dependencies: image_picker: ^0.6.7+22 video_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/
最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!
欢送关注我的公众号:「程序那些事」,懂技术,更懂你!