1??包介紹
使用包可以創建可輕松共享的模塊化代碼。 最小包裝包括:
pubspec.yaml文件:聲明包名稱,版本,作者等的元數據文件。
包含程序包中的公共代碼的lib目錄,最少包含一個 .dart文件。
2??包類型
包可以包含幾種內容:
Dart包:用Dart編寫的常規包,例如路徑包。 其中一些可能包含Flutter特定功能,因此對Flutter框架具有依賴性,僅將其用于Flutter,例如fluro包。
插件包:一個專門的Dart包,其中包含用Dart代碼編寫的API,以及針對Android(使用Java或Kotlin)和/或iOS(使用ObjC或Swift)的平臺特定實現。 一個具體的例子是電池插件包。
3??開發Dart包
第1步:創建包
要創建一個Dart包,可以使用--template = package標志并使用flutter create:
第2步:實施包裝
對于純Dart包,只需在主lib / <包名稱> .dart文件或lib目錄中的多個文件中添加該功能即可。
要測試軟件包(單元測試 、
1單元測試測試單個函數,方法或類。被測單元的外部依賴性通常使用例如package:mockito來嘲笑。單元測試通常不會讀取/寫入磁盤,渲染到屏幕,也不會從運行測試的進程外部接收用戶操作。單元測試的目標是在各種條件下驗證邏輯單元的正確性。
2小部件測試(在其他UI框架中稱為組件測試)測試單個小部件。測試小部件涉及多個類,并且需要提供適當的小部件生命周期上下文的測試環境。例如,它應該能夠接收和響應用戶操作和事件,執行布局,并實例化子窗口小部件。小部件測試因此比單元測試更全面。然而,就像一個單元測試一樣,一個小部件測試的環境被一個比完整的UI系統簡單得多的實現所取代。小部件測試的目標是驗證小部件的UI看起來和按預期進行交互。
3集成測試測試完整的應用程序或應用程序的大部分。通常,集成測試可以在真實設備或OS仿真器上運行,例如iOS Simulator或Android Emulator。被測試的應用程序通常與測試驅動程序代碼隔離,以避免結果偏差。集成測試的目標是驗證應用程序作為一個整體正確運行,它所組成的所有小部件按照預期相互集成。您還可以使用集成測試來驗證應用的性能。),請在測試目錄中添加單元測試。
有關如何組織包內容的更多詳細信息,請參閱Dart庫包文檔。
4??開發插件包?
如果你想開發一個調用特定于平臺的API的包,你需要開發一個插件包。插件程序包是Dart程序包的專用版本,除上述內容外,還包含針對Android(Java或Kotlin代碼),針對iOS(Objective-C或Swift代碼)編寫的特定于平臺的實現,或針對兩者。 API使用平臺通道連接到特定于平臺的實現。
第1步:創建包
要創建一個插件包,請在創建時使用--template = plugin標志。
使用--org選項來指定您的組織,并使用反向域名表示法。該值用于生成的Android和iOS代碼中的各種包和包標識符。
$ flutter create --org com.example --template = plugin hello
第2步:實施包裝
由于插件包中包含用幾種編程語言編寫的幾個平臺的代碼,因此需要一些特定的步驟來確保順暢的體驗。
步驟a:添加iOS平臺代碼(.h + .m / .swift)
我們建議您使用Xcode編輯iOS代碼。
在編輯Xcode中的iOS平臺代碼之前,首先確保代碼至少已構建過一次(即,從IDE /編輯器或終端運行示例應用程序執行
cd hello/example;?
flutter build ios --no-codesign
然后,
啟動Xcode
選擇'文件>打開',然后選擇hello / example / ios / Runner.xcworkspace文件。
您的插件的iOS平臺代碼位于Pods / Development中
Pods / hello / Classes /在Project Navigator中。
5?? 添加文檔
建議將以下文檔添加到所有軟件包:
一個介紹軟件包的README.md文件
CHANGELOG.md文件記錄每個版本中的更改
許可證文件,其中包含許可證包的條款
所有公共API的API文檔(詳情見下文)
6??發布軟件包
https://pub.dartlang.orgflutter 插件官網
7??處理包相互依賴性
這兩種方式與您在Flutter應用程序或任何其他Dart項目中包含的軟件包沒有什么不同。
但是,如果自己的項目也碰巧是一個插件包,其平臺特定的代碼需要訪問url_launcher公開的特定于平臺的API,則還需要將適當的依賴聲明添加到特定于平臺的構建文件中,如下所示。