flutter pub中有很多開源庫,如dio、provider等,這些都是package,直接在pubspec中引入就可以在工程中使用。看下如何自己進行建立
建立package
通過以下命令列建立一個package
flutter create --template=package plugins
複製程式碼
建立演示程式碼(可選)
在test檔案中,對存dart庫進行單元測試,但是在涉及頁面等功能,需要有一個demo,需要在工程內部建立一個demo。
如果要釋出到公有pub上,需要寫上示例程式碼,方便別人知道如何使用。
cd plugins
flutter create example
複製程式碼
得到的目錄結構如下所示:
|____CHANGELOG.md
|____LICENSE
|____README.md
|____example
|____lib
| |____common
| | |____not_found.dart
| |____components
| | |____app_bar_factory.dart
| |____plugins.dart
| |____routers
| | |____route_manager.dart
|____plugins.iml
|____pubspec.lock
|____pubspec.yaml
|____test
| |____plugins_test.dart
複製程式碼
說明:
CHANGELOG.md
每次版本釋出修改日誌,可以進行維護LICENSE
開源庫,所屬開源協議README.md
庫的介紹example
測試專案,可以在example - pubspec.yaml
中,對引入目標庫lib
庫實現檔案目錄,預設為公開目錄,其他庫可以直接使用。實現程式碼放在lib/src
目錄(目錄也可以自定義,自定義目錄時需要指明引用哪個目錄的程式碼)中,該目錄為私有的,需要在lib
目錄下進行匯出。pubspec.yaml
包配置檔案
plugins工程配置
開啟pubspec.yaml
,對庫進行配置,需要完善全部資訊。
name: plugins // 與專案名稱保持一致
description: A new Flutter package project. // 庫的介紹
version: 0.0.1 // 版本號
author: // 作者
homepage: // 庫的主頁
複製程式碼
然後,對庫檔案增加實現類,並匯出至lib。lib中建立瞭如下原始碼檔案:
- routers:route_manager.dart
- components:app_bar_factory.dart
- common: not_found.dart
在plugins.dart檔案中增加對實現檔案的匯出。
library plugins;
export 'package:plugins/routers/route_manager.dart';
export 'package:plugins/components/app_bar_factory.dart';
export 'package:plugins/common/not_found.dart';
複製程式碼
本地引入
在其他工程中的pubspec.yaml中通過path引入本地包(如果釋出到pub,可以用pub引入),同時應當引入本地包依賴的其他包,如本例中的fluro。注意path可以是相對路徑也可以是絕對路徑。對於協作的專案,建議放到相對路徑或通過git引入。
dependencies:
flutter:
sdk: flutter
plugins:
path: ../plugins/
fluro: ^1.6.3
複製程式碼
編寫Example
在example目錄的pubspec.yaml中通過path引入寫好的package,編寫示例程式碼。
dependencies:
flutter:
sdk: flutter
demo:
path : ../
複製程式碼
釋出到pub(公有資源)
pub publish
複製程式碼
私有資源建議釋出到自有的git倉庫,然後通過git引入即可。