簡介
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+1
environment:
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/
最通俗的解讀,最深刻的乾貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!
歡迎關注我的公眾號:「程式那些事」,懂技術,更懂你!