dart系列之:在dart中使用packages
文章目錄
- 簡(jiǎn)介
- pubspec.yaml
- get packages
- 使用packages
- 升級(jí)依賴
- 總結(jié)
簡(jiǎn)介
java中使用jar包來(lái)封裝有用的功能,然后將其分發(fā)到maven倉(cāng)庫(kù)中,供其他人使用。同樣的在dart中也有類似的概念叫做packages。packages就是可以用來(lái)共享的軟件包,可以包含libraries和tools。
你可以在pub.dev網(wǎng)站中查到dart中所有的共享packages的信息。 那么怎么在一個(gè)dart項(xiàng)目中使用這些packages呢?
pubspec.yaml
簡(jiǎn)單點(diǎn)講,一個(gè)dart的package就是包含pubspec.yaml的目錄。pubspec.yaml是一個(gè)描述文件,用來(lái)表明該package的元信息,包括當(dāng)前package的名字,版本號(hào)和依賴信息等。
要想使用pub.dev上的packages,只需要在pubspec.yaml引入對(duì)應(yīng)的依賴即可。
我們舉個(gè)例子:
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這里我們的引入了兩個(gè)依賴包,分別是image_picker和video_player。
get packages
當(dāng)我們修改了pubspec.yaml之后,其實(shí)對(duì)應(yīng)的package并沒(méi)有下載到本地來(lái),還需要通過(guò)下面的命令來(lái)下載對(duì)應(yīng)的packages:
cd <path-to-my_app>dart pub getdart pub get會(huì)根據(jù)pubspec.yaml中配置的內(nèi)容下載對(duì)應(yīng)的包,并放置在系統(tǒng)緩存中。
在Mac或者Linux系統(tǒng)中,這個(gè)緩存目錄的地址是:~/.pub-cache,在windows中這個(gè)目錄地址是:%LOCALAPPDATA%\Pub\Cache。
當(dāng)然,你也可以通過(guò)設(shè)置PUB_CACHE來(lái)更換這個(gè)地址。
如果你依賴的包又依賴其他的包的話,其他依賴包也會(huì)被下載下來(lái)。
當(dāng)下載完依賴包之后,dart會(huì)在 .dart_tool/目錄中創(chuàng)建一個(gè) package_config.json文件,用來(lái)表示當(dāng)前項(xiàng)目和系統(tǒng)緩存包的映射關(guān)系。
使用packages
萬(wàn)事俱備,只欠東風(fēng)。現(xiàn)在包也有了,剩下就是使用了。
使用libary可以用關(guān)鍵字import。如果是dart SDK中的包,則以dart:開(kāi)頭:
import 'dart:html';如果是第三方包,則以package: 開(kāi)頭:
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;默認(rèn)情況下,引入的包是初始加載的,如果某些包特別大,或者你想要在使用的時(shí)候再進(jìn)行加載,則可以使用deferred關(guān)鍵字進(jìn)行延時(shí)加載:
import 'package:greetings/hello.dart' deferred as hello;在使用的時(shí)候,需要顯示調(diào)用loadLibrary() 方法,來(lái)加載對(duì)應(yīng)的library:
Future<void> greet() async {await hello.loadLibrary();hello.printGreeting(); }升級(jí)依賴
在第一次運(yùn)行dart pub get 之后,dart會(huì)創(chuàng)建一個(gè)pubspec.lock文件,用來(lái)鎖定依賴包的版本號(hào),如果是在團(tuán)隊(duì)協(xié)作中,這個(gè)lock文件是特別有用的,它可以保證團(tuán)隊(duì)中所有成員使用的都是同一個(gè)版本的依賴包。
當(dāng)你想升級(jí)對(duì)應(yīng)的依賴的時(shí)候,可以使用dart pub upgrade命令,對(duì)依賴包進(jìn)行升級(jí)。
dart pub upgrade會(huì)根據(jù)最新的可用包來(lái)生成最新的lock文件。
當(dāng)然,你也可以指定升級(jí)某個(gè)特定的依賴包:
dart pub upgrade image_picker要想查看最新依賴包的最新版本,可以使用:
dart pub outdated總結(jié)
以上就是dart中packages的使用。
本文已收錄于 http://www.flydean.com/09-dart-packages/
最通俗的解讀,最深刻的干貨,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來(lái)發(fā)現(xiàn)!
歡迎關(guān)注我的公眾號(hào):「程序那些事」,懂技術(shù),更懂你!
總結(jié)
以上是生活随笔為你收集整理的dart系列之:在dart中使用packages的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dart系列之:dart类中的泛型
- 下一篇: dart系列之:元世界pubspec.y