Flutter09 - 包管理器
一個APP在實際開發中往往會依賴很多包,而這些包通常都有交叉依賴關係、版本依賴等,如果由開發者手動來管理應用中的依賴包將會非常麻煩。因此,各種開發生態或編程語言官方通常都會提供一些包管理工具:
- Android提供了Gradle來管理依賴
- iOS用Cocoapods或Carthage來管理依賴
- Node中通過npm等
- flutter如何使用配置文件
pubspec.yaml
name: first_flutter_app # 應用或包名
description: A new Flutter application. # 應用或包的描述/簡介
version: 1.0.0+1 # 應用或包的版本號
environment: # sdk環境
sdk: ">=2.1.0 <3.0.0"
dependencies: # 應用或包依賴的其他包或插件
flutter:
sdk: flutter
cupertino_icons: ^0.1.2
dev_dependencies: # 開發環境依賴的工具包
flutter_test:
sdk: flutter
flutter: # flutter相關的配置選項
uses-material-design: true
每個字段的意義:
name
:應用或包名稱。description
: 應用或包的描述、簡介。version
:應用或包的版本號。dependencies
:應用或包依賴的其它包或插件。dev_dependencies
:開發環境依賴的工具包(而不是flutter應用本身依賴的包)。flutter
:flutter相關的配置選項。
下載和使用第三方庫
Pub(https://pub.dev/ )是Google官方的Dart Packages倉庫,類似於node中的npm倉庫,android中的jcenter。
搜索需要的 第三方庫後
添加新的依賴
cupertino_icons: ^0.1.2
# 新添加的依賴
english_words: ^3.1.3
然後點擊Packages get
我們可以在控制檯中看到以下內容
/Users/a/flutter/bin/flutter --no-color packages get
Running "flutter pub get" in first_flutter_app... 3.4s
Process finished with exit code 0
我們也可以在控制檯,定位到當前工程目錄,然後手動運行flutter packages get
命令來下載依賴包。
dependencies
和dev_dependencies
的區別:
前者的依賴包將作爲APP的源碼的一部分參與編譯,生成最終的安裝包。而後者的依賴包只是作爲開發階段的一些工具包,主要是用於幫助我們提高開發、測試效率,比如flutter的自動化測試包等
使用第三方庫
import 'package:english_words/english_words.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final wordStr = WordPair.random(); //使用第三方庫生成一個隨機單詞
return MaterialApp(
title: "使用第三方庫生成一個隨機單詞",
home: Scaffold(
appBar: AppBar(
title: Text("使用第三方庫生成一個隨機單詞"),
),
body: Center(
child: Column(
children: <Widget>[
Text(
"$wordStr",
),
],
),
),
),
);
}
}
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-kqtiVe7i-1584404599137)(https://s1.ax1x.com/2020/03/17/8trfyT.png)]
其他依賴方式
-
依賴本地包
如果我們正在本地開發一個包,包名爲pkg1,我們可以通過下面方式依賴:
dependencies: pkg1: path: ../../code/pkg1
路徑可以是相對的,也可以是絕對的。
-
依賴Git:你也可以依賴存儲在Git倉庫中的包。如果軟件包位於倉庫的根目錄中,請使用以下語法
dependencies: pkg1: git: url: git://github.com/xxx/pkg1.git
上面假定包位於Git存儲庫的根目錄中。如果不是這種情況,可以使用path參數指定相對位置,例如:
dependencies: package1: git: url: git://github.com/flutter/packages.git path: packages/package1
但還有一些其它依賴方式,完整的內容讀者可以自行查看:https://www.dartlang.org/tools/pub/dependencies