通過使用packages 的模式,可以創建易於共享的模組化程式碼
一個最基本的package 由以下內容構成:
pubspec.yaml
用於定義package 名稱、版本號、作者等其他訊息的元數據文件
lib
目錄
包含共享程式碼的lib
目錄,其中至少包含一個<package-name>.dart
文件
編寫插件的注意事項列表,請參考 Writing a good plugin
Package 可分為以下兩種類別:
Dart packages
一般用 Dart 編寫的package,比如 path package
,其中可能包含Flutter 的特定功能,因此依賴於Flutter 框架,其使用範圍僅限於Flutter,比如 fluro
Plugin packages
一個能實現原生平台功能的 Dart package,其中包含一個用 Dart 代碼編寫的 API 以及一個或多個特定於平台的實作。
Plugin packages 可以為 Android(使用 Kotlin 或 Java)、iOS(使用 Swift 或 Objective-C)、Web、macOS、Windows 或 Linux 或其任意組合的平台。
如果想要開發一個調用特定平台API 的package,你需要開發一個原生插件package。原生插件packgae 是Dart package 的特別版本,除了在Dart package 要實現內容,還需要按需使用Java 或Kotlin、ObjC 或Swift 分別在Android 和/或iOS 平台實作,通過使用 platform channel 中的API 來實現特定平台的調用