Flutter -- 三方組件庫管理

與 Android 中的 JCenter/Maven洽损、iOS 中的 CocoaPods/SPM/Carthage庞溜、前端中的 npm 庫類似,Dart 提供了官方的包倉庫 Pub用來管理代碼和資源碑定。

在 Dart 中流码,庫和應用都屬于包。pubspec.yaml 是包的配置文件延刘,包含了包的元數(shù)據(jù)(比如漫试,包的名稱和版本)、運行環(huán)境(也就是 Dart SDK 與 Fluter SDK 版本)碘赖、外部依賴驾荣、內(nèi)部配置(比如,資源管理)普泡。

下面我們看一個應用配置文件播掷,其版本為 1.0,Dart 運行環(huán)境支持 2.1 至 3.0 之間撼班,依賴 fluttercupertino_icon

name: flutter_app_example #應用名稱
description: A new Flutter application. #應用描述
version: 1.0.0 
#Dart運行環(huán)境區(qū)間
environment:
  sdk: ">=2.1.0 <3.0.0"
#Flutter依賴庫
dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.1

運行環(huán)境和依賴庫 cupertino_icons 冒號后面的部分是版本約束信息歧匈,由一組空格分隔的版本描述組成,可以支持指定版本砰嘁、版本號區(qū)間件炉,以及任意版本這三種版本約束方式。
pubspec.yaml中矮湘,除了可以用這種方式引用pub公開發(fā)布的第三方包外斟冕,我們還可以使用本地路徑或 Git 地址的方式進行包聲明

dependencies:
  package1:
    path: ../package1/  #路徑依賴
  date_format:
    git:
      url: https://github.com/xxx/package2.git #git依賴

pub除了管理第三方依賴,包管理工具 Pub 的另一個職責是板祝,找出一組同時滿足每個包版本約束的包版本宫静。包版本一旦確定,接下來就是下載對應版本的包了券时。

對于 dependencies 中的不同數(shù)據(jù)源孤里,Dart 會使用不同的方式進行管理,最終會將遠端的包全部下載到本地橘洞。比如捌袜,對于 Git 聲明依賴的方式,Pub 會 clone Git 倉庫炸枣;對于版本號的方式虏等,Pub 則會從 pub.dartlang.org 下載包弄唧。如果包還有其他的依賴包,比如 package1 包還依賴 package3 包霍衫,Pub 也會一并下載候引。

然后,在完成了所有依賴包的下載后敦跌,Pub 會在應用的根目錄下創(chuàng)建 .packages 文件澄干,將依賴的包名與系統(tǒng)緩存中的包文件路徑進行映射,方便后續(xù)維護柠傍。

最后麸俘,Pub 會自動創(chuàng)建 pubspec.lock 文件。pubspec.lock 文件的作用類似 iOS 的 Podfile.lock 或前端的 package-lock.json 文件惧笛,用于記錄當前狀態(tài)下實際安裝的各個直接依賴从媚、間接依賴的包的具體來源和版本號。

比較活躍的第三方包的升級通常比較頻繁患整,因此對于多人協(xié)作的 Flutter 應用來說拜效,我們需要把 pubspec.lock 文件也一并提交到代碼版本管理中,這樣團隊中的所有人在使用這個應用時安裝的所有依賴都是完全一樣的并级,以避免出現(xiàn)庫函數(shù)找不到或者其他的依賴錯誤拂檩。

除了提供功能和代碼維度的依賴之外,包還可以提供資源的依賴嘲碧。在依賴包中的 pubspec.yaml 文件已經(jīng)聲明了同樣資源的情況下稻励,為節(jié)省應用程序安裝包大小,我們需要復用依賴包中的資源愈涩。

Image.asset('assets/placeholder.png', package: 'package4');
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末望抽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子履婉,更是在濱河造成了極大的恐慌煤篙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毁腿,死亡現(xiàn)場離奇詭異辑奈,居然都是意外死亡,警方通過查閱死者的電腦和手機已烤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門鸠窗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胯究,你說我怎么就攤上這事稍计。” “怎么了裕循?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵臣嚣,是天一觀的道長净刮。 經(jīng)常有香客問我,道長硅则,這世上最難降的妖魔是什么淹父? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮怎虫,結果婚禮上弹灭,老公的妹妹穿的比我還像新娘。我一直安慰自己揪垄,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布逻翁。 她就那樣靜靜地躺著饥努,像睡著了一般。 火紅的嫁衣襯著肌膚如雪八回。 梳的紋絲不亂的頭發(fā)上酷愧,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音缠诅,去河邊找鬼溶浴。 笑死,一個胖子當著我的面吹牛管引,可吹牛的內(nèi)容都是我干的士败。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼褥伴,長吁一口氣:“原來是場噩夢啊……” “哼谅将!你這毒婦竟也來了?” 一聲冷哼從身側響起重慢,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤饥臂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后似踱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隅熙,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年核芽,在試婚紗的時候發(fā)現(xiàn)自己被綠了囚戚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡狞洋,死狀恐怖弯淘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吉懊,我是刑警寧澤庐橙,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布假勿,位于F島的核電站,受9級特大地震影響态鳖,放射性物質(zhì)發(fā)生泄漏转培。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一浆竭、第九天 我趴在偏房一處隱蔽的房頂上張望浸须。 院中可真熱鬧,春花似錦邦泄、人聲如沸删窒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肌索。三九已至,卻和暖如春特碳,著一層夾襖步出監(jiān)牢的瞬間诚亚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工午乓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留站宗,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓益愈,卻偏偏與公主長得像梢灭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蒸其,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容