天天看點

#yyds幹貨盤點#dart系列之:在dart中使用packages

文章目錄

  • ​​簡介​​
  • ​​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+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      

總結