開發套件與外掛
套件簡介
#套件可讓您建立可輕鬆共享的模組化程式碼。一個最小的套件包含下列項目
pubspec.yaml
- 一個宣告套件名稱、版本、作者等等的中繼資料檔案。
lib
lib
目錄包含套件中的公開程式碼,至少會有一個單一的<套件名稱>.dart
檔案。
套件類型
#套件可以包含不只一種內容
- Dart 套件
以 Dart 撰寫的通用套件,例如
path
套件。其中一些可能包含特定於 Flutter 的功能,因此會依賴 Flutter 框架,限制其僅在 Flutter 中使用,例如fluro
套件。- 外掛套件
一種特殊的 Dart 套件,包含以 Dart 程式碼撰寫的 API,並結合一個或多個平台特定的實作。
外掛套件可以為 Android (使用 Kotlin 或 Java)、iOS (使用 Swift 或 Objective-C)、網頁、macOS、Windows 或 Linux 撰寫,或以上任意組合。
一個具體的範例是
url_launcher
外掛套件。若要瞭解如何使用url_launcher
套件,以及如何擴充它以實作網頁支援,請參閱 Harry Terkelsen 在 Medium 上的文章如何撰寫 Flutter 網頁外掛,第一部分。- FFI 外掛套件
一種特殊的 Dart 套件,包含以 Dart 程式碼撰寫的 API,並結合一個或多個平台特定的實作,這些實作使用 Dart FFI (Android、iOS、macOS)。
開發 Dart 套件
#下列說明解釋如何撰寫 Flutter 套件。
步驟 1:建立套件
#若要建立 Flutter 入門套件,請將 --template=package
旗標與 flutter create
一起使用
flutter create --template=package hello
這會在 hello
資料夾中建立一個套件專案,其中包含下列內容
- LICENSE
- 一個(大部分)空白的授權文字檔。
- test/hello_test.dart
- 套件的單元測試。
- hello.iml
- IntelliJ IDE 使用的設定檔。
- .gitignore
- 一個隱藏檔案,告訴 Git 在專案中要忽略哪些檔案或資料夾。
- .metadata
- IDE 用來追蹤 Flutter 專案屬性的隱藏檔案。
- pubspec.yaml
- 一個 yaml 檔案,其中包含指定套件相依性的中繼資料。pub 工具使用。
- README.md
- 一個入門 markdown 檔案,簡要描述套件的用途。
- lib/hello.dart
- 一個入門應用程式,其中包含套件的 Dart 程式碼。
- .idea/modules.xml、.idea/workspace.xml
- 一個隱藏資料夾,其中包含 IntelliJ IDE 的設定檔。
- CHANGELOG.md
- 一個(大部分)空白的 markdown 檔案,用於追蹤套件的版本變更。
步驟 2:實作套件
#對於純 Dart 套件,只需將功能新增到主要的 lib/<套件名稱>.dart
檔案中,或新增到 lib
目錄中的數個檔案中即可。
若要測試套件,請在 test
目錄中新增單元測試。
如需有關如何組織套件內容的其他詳細資訊,請參閱Dart 程式庫套件文件。
開發外掛程式套件
#如果您想開發一個呼叫平台特定 API 的套件,您需要開發一個外掛套件。
API 使用平台通道連接到平台特定的實作。
聯合外掛程式
#聯合外掛是一種將不同平台的支援分割到不同套件中的方式。因此,聯合外掛可以使用一個套件用於 iOS、另一個用於 Android、另一個用於網頁,還有一個用於汽車(作為 IoT 裝置的範例)。除此之外,這種方法還能讓領域專家將現有外掛擴充到他們最熟悉的平台。
聯合外掛需要下列套件
- 面向應用程式的套件
- 外掛使用者依賴此套件來使用外掛。此套件指定 Flutter 應用程式使用的 API。
- 平台套件
- 一個或多個包含平台特定實作程式碼的套件。面向應用程式的套件會呼叫這些套件,這些套件不會包含在應用程式中,除非它們包含終端使用者可存取的平台特定功能。
- 平台介面套件
- 將面向應用程式的套件黏合到平台套件的套件。此套件宣告任何平台套件必須實作的介面,才能支援面向應用程式的套件。擁有一個定義此介面的單一套件,可確保所有平台套件都以統一的方式實作相同的功能。
認可的聯合外掛
#理想情況下,在將平台實作新增到聯合外掛時,您會與套件作者協調以包含您的實作。這樣,原始作者就會認可您的實作。
例如,假設您為(虛構的)foobar
外掛撰寫 foobar_windows
實作。在認可的外掛中,原始的 foobar
作者會將您的 Windows 實作新增為面向應用程式的套件之 pubspec 中的相依性。然後,當開發人員將 foobar
外掛包含在其 Flutter 應用程式中時,Windows 實作以及其他認可的實作,都會自動提供給應用程式。
未認可的聯合外掛
#如果您因任何原因無法讓原始外掛作者新增您的實作,則您的外掛未獲得認可。開發人員仍然可以使用您的實作,但必須手動將外掛新增到應用程式的 pubspec 檔案中。因此,開發人員必須同時包含 foobar
相依性和 foobar_windows
相依性,才能實現完整功能。
如需有關聯合外掛的更多資訊、它們為何有用,以及它們如何實作,請參閱 Harry Terkelsen 在 Medium 上的文章如何撰寫 Flutter 網頁外掛,第二部分。
指定外掛程式的支援平台
#外掛可以透過在 pubspec.yaml
檔案的 platforms
對應中新增金鑰,來指定它們支援的平台。例如,下列 pubspec 檔案顯示 hello
外掛的 flutter:
對應,該外掛僅支援 iOS 和 Android
flutter:
plugin:
platforms:
android:
package: com.example.hello
pluginClass: HelloPlugin
ios:
pluginClass: HelloPlugin
在為更多平台新增外掛實作時,應相應更新 platforms
對應。例如,這是 hello
外掛之 pubspec 檔案中的對應,在更新為新增對 macOS 和網頁的支援時
flutter:
plugin:
platforms:
android:
package: com.example.hello
pluginClass: HelloPlugin
ios:
pluginClass: HelloPlugin
macos:
pluginClass: HelloPlugin
web:
pluginClass: HelloPlugin
fileName: hello_web.dart
聯合平台套件
#平台套件使用相同的格式,但包含一個 implements
項目,指出它實作哪個面向應用程式的套件。例如,包含 hello
的 Windows 實作的 hello_windows
外掛會具有下列 flutter:
對應
flutter:
plugin:
implements: hello
platforms:
windows:
pluginClass: HelloPlugin
認可的實作
#面向應用程式的套件可以透過新增對平台套件的相依性,並將其包含在 platforms:
對應中作為 default_package
來認可平台套件。如果上面的 hello
外掛認可了 hello_windows
,則它會如下所示
flutter:
plugin:
platforms:
android:
package: com.example.hello
pluginClass: HelloPlugin
ios:
pluginClass: HelloPlugin
windows:
default_package: hello_windows
dependencies:
hello_windows: ^1.0.0
請注意,如此處所示,面向應用程式的套件可以在套件內實作某些平台,以及在認可的聯合實作中實作其他平台。
共用的 iOS 和 macOS 實作
#許多框架都使用相同或幾乎相同的 API 同時支援 iOS 和 macOS,使得有可能使用相同的程式碼庫為 iOS 和 macOS 實作一些外掛。通常,每個平台的實作都位於自己的資料夾中,但 sharedDarwinSource
選項允許 iOS 和 macOS 改為使用相同的資料夾
flutter:
plugin:
platforms:
ios:
pluginClass: HelloPlugin
sharedDarwinSource: true
macos:
pluginClass: HelloPlugin
sharedDarwinSource: true
environment:
sdk: ^3.0.0
# Flutter versions prior to 3.7 did not support the
# sharedDarwinSource option.
flutter: ">=3.7.0"
當啟用 sharedDarwinSource
時,iOS 使用 ios
目錄,而 macOS 使用 macos
目錄,這兩個平台都改為使用共用的 darwin
目錄來存放所有程式碼和資源。啟用此選項時,您需要將所有現有檔案從 ios
和 macos
移動到共用目錄。您也需要更新 podspec 檔案,為這兩個平台設定相依性和部署目標,例如
s.ios.dependency 'Flutter'
s.osx.dependency 'FlutterMacOS'
s.ios.deployment_target = '11.0'
s.osx.deployment_target = '10.14'
步驟 1:建立套件
#若要建立外掛套件,請將 --template=plugin
旗標與 flutter create
一起使用。
使用 --platforms=
選項,後面接著以逗號分隔的清單,以指定外掛支援的平台。可用的平台包括:android
、ios
、web
、linux
、macos
和 windows
。如果未指定任何平台,則產生的專案不支援任何平台。
使用 --org
選項,使用反向網域名稱表示法來指定您的組織。此值用於產生的外掛程式碼中的各種套件和套件識別碼。
預設情況下,外掛專案使用 Swift 作為 iOS 程式碼,並使用 Kotlin 作為 Android 程式碼。如果您偏好使用 Objective-C 或 Java,您可以使用 -i
指定 iOS 語言,並使用 -a
指定 Android 語言。請選擇下列其中一個
flutter create --org com.example --template=plugin --platforms=android,ios,linux,macos,windows -a kotlin hello
flutter create --org com.example --template=plugin --platforms=android,ios,linux,macos,windows -a java hello
flutter create --org com.example --template=plugin --platforms=android,ios,linux,macos,windows -i objc hello
flutter create --org com.example --template=plugin --platforms=android,ios,linux,macos,windows -i swift hello
這會在 hello
資料夾中建立一個外掛專案,其中包含下列特定內容
lib/hello.dart
- 外掛的 Dart API。
android/src/main/java/com/example/hello/HelloPlugin.kt
- 以 Kotlin 撰寫的外掛 API 之 Android 平台特定實作。
ios/Classes/HelloPlugin.m
- 以外掛 API 的 Objective-C 撰寫的 iOS 平台特定實作。
example/
- 一個依賴外掛並說明如何使用它的 Flutter 應用程式。
步驟 2:實作套件
#由於外掛套件包含多個以多種程式語言撰寫的平台的程式碼,因此需要一些特定的步驟來確保順暢的體驗。
步驟 2a:定義套件 API (.dart)
#外掛套件的 API 是在 Dart 程式碼中定義的。在您最喜愛的 Flutter 編輯器中開啟主要的 hello/
資料夾。找到檔案 lib/hello.dart
。
步驟 2b:新增 Android 平台程式碼 (.kt/.java)
#我們建議您使用 Android Studio 編輯 Android 程式碼。
在 Android Studio 中編輯 Android 平台程式碼之前,請先確定程式碼已建構至少一次(換句話說,從您的 IDE/編輯器執行範例應用程式,或在終端機中執行 cd hello/example; flutter build apk --config-only
)。
然後使用下列步驟
- 啟動 Android Studio。
- 在 Welcome to Android Studio 對話方塊中,選取 Open an existing Android Studio Project,或從選單中選取 File > Open,然後選取
hello/example/android/build.gradle
檔案。 - 在 Gradle Sync 對話方塊中,選取 OK。
- 在Android Gradle Plugin 更新對話框中,選取不要再提醒我這個專案。
您的外掛程式的 Android 平台程式碼位於 hello/java/com.example.hello/HelloPlugin
。
您可以按下執行 (▶) 按鈕,從 Android Studio 執行範例應用程式。
步驟 2c:新增 iOS 平台程式碼 (.swift/.h+.m)
#我們建議您使用 Xcode 編輯 iOS 程式碼。
在 Xcode 中編輯 iOS 平台程式碼之前,請先確保程式碼已至少建置一次(換句話說,從您的 IDE/編輯器執行範例應用程式,或在終端機中執行 cd hello/example; flutter build ios --no-codesign --config-only
)。
然後使用下列步驟
- 啟動 Xcode。
- 選取檔案 > 開啟,然後選取
hello/example/ios/Runner.xcworkspace
檔案。
您的外掛程式的 iOS 平台程式碼位於專案導覽器中的 Pods/Development Pods/hello/../../example/ios/.symlinks/plugins/hello/ios/Classes
。(如果您使用 sharedDarwinSource
,路徑會以 hello/darwin/Classes
結尾。)
您可以按下執行 (▶) 按鈕來執行範例應用程式。
新增 CocoaPod 相依性
#使用下列指示新增版本為 0.0.1
的 HelloPod
在
ios/hello.podspec
的結尾指定相依性rubys.dependency 'HelloPod', '0.0.1'
對於私有 pod,請參閱 私有 CocoaPods,以確保存放庫存取權
rubys.source = { # For pods hosted on GitHub :git => "https://github.com/path/to/HelloPod.git", # Alternatively, for pods hosted locally # :path => "file:///path/to/private/repo", :tag => s.version.to_s }`
安裝外掛程式
- 在外掛程式專案的
pubspec.yaml
相依性中新增外掛程式。 - 執行
flutter pub get
。 - 在外掛程式專案的
ios/
目錄中,執行pod install
。
- 在外掛程式專案的
該 pod 應該會出現在安裝摘要中。
如果您的外掛程式需要隱私權清單,例如,如果它使用了任何必要原因 API,請更新 PrivacyInfo.xcprivacy
檔案以描述您的外掛程式的隱私權影響,並將以下內容新增至您的 podspec 檔案底部
s.resource_bundles = {'your_plugin_privacy' => ['your_plugin/Sources/your_plugin/Resources/PrivacyInfo.xcprivacy']}
如需更多資訊,請查看 Apple 開發人員網站上的 隱私權清單檔案。
步驟 2d:新增 Linux 平台程式碼 (.h+.cc)
#我們建議您使用具有 C++ 整合的 IDE 編輯 Linux 程式碼。以下說明適用於安裝了「C/C++」和「CMake」擴充功能的 Visual Studio Code,但可以針對其他 IDE 進行調整。
在 IDE 中編輯 Linux 平台程式碼之前,請先確保程式碼已至少建置一次(換句話說,從您的 Flutter IDE/編輯器執行範例應用程式,或在終端機中執行 cd hello/example; flutter build linux
)。
然後使用下列步驟
- 啟動 Visual Studio Code。
- 開啟
hello/example/linux/
目錄。 - 在提示詢問:「您想要設定專案 'linux' 嗎?」時,選擇是。這會允許 C++ 自動完成功能正常運作。
您的外掛程式的 Linux 平台程式碼位於 flutter/ephemeral/.plugin_symlinks/hello/linux/
。
您可以使用 flutter run
執行範例應用程式。注意:在 Linux 上建立可執行的 Flutter 應用程式需要一些屬於 flutter
工具一部分的步驟,因此即使您的編輯器提供 CMake 整合,以該方式建置和執行也無法正確運作。
步驟 2e:新增 macOS 平台程式碼 (.swift)
#我們建議您使用 Xcode 編輯 macOS 程式碼。
在 Xcode 中編輯 macOS 平台程式碼之前,請先確保程式碼已至少建置一次(換句話說,從您的 IDE/編輯器執行範例應用程式,或在終端機中執行 cd hello/example; flutter build macos --config-only
)。
然後使用下列步驟
- 啟動 Xcode。
- 選取檔案 > 開啟,然後選取
hello/example/macos/Runner.xcworkspace
檔案。
您的外掛程式的 macOS 平台程式碼位於專案導覽器中的 Pods/Development Pods/hello/../../example/macos/Flutter/ephemeral/.symlinks/plugins/hello/macos/Classes
。(如果您使用 sharedDarwinSource
,路徑會以 hello/darwin/Classes
結尾。)
您可以按下執行 (▶) 按鈕來執行範例應用程式。
步驟 2f:新增 Windows 平台程式碼 (.h+.cpp)
#我們建議您使用 Visual Studio 編輯 Windows 程式碼。
在 Visual Studio 中編輯 Windows 平台程式碼之前,請先確保程式碼已至少建置一次(換句話說,從您的 IDE/編輯器執行範例應用程式,或在終端機中執行 cd hello/example; flutter build windows
)。
然後使用下列步驟
- 啟動 Visual Studio。
- 選取開啟專案或方案,然後選取
hello/example/build/windows/hello_example.sln
檔案。
您的外掛程式的 Windows 平台程式碼位於方案總管中的 hello_plugin/Source Files
和 hello_plugin/Header Files
。
您可以藉由在方案總管中按一下滑鼠右鍵點選 hello_example
並選取設定為啟始專案,然後按下執行 (▶) 按鈕來執行範例應用程式。重要:變更外掛程式程式碼後,您必須選取建置 > 建置方案,然後才能再次執行,否則將會執行外掛程式的舊版本,而不是包含您變更的最新版本。
步驟 2g:連結 API 和平台程式碼
#最後,您需要將 Dart 程式碼中編寫的 API 與特定平台的實作連結起來。這可以使用平台通道完成,或透過平台介面套件中定義的介面完成。
在現有的外掛程式專案中新增平台支援
#若要將特定平台的支援新增至現有的外掛程式專案,請再次在專案目錄中使用 --template=plugin
旗標執行 flutter create
。例如,若要在現有的外掛程式中新增 Web 支援,請執行
flutter create --template=plugin --platforms=web .
如果此命令顯示有關更新 pubspec.yaml
檔案的訊息,請依照提供的指示操作。
Dart 平台實作
#在許多情況下,非 Web 平台的實作只會使用特定平台的實作語言,如上所示。但是,平台實作也可以使用特定平台的 Dart。
僅限 Dart 的平台實作
#在某些情況下,某些平台可以完全在 Dart 中實作(例如,使用 FFI)。對於 Web 以外平台上的僅限 Dart 的平台實作,請以 dartPluginClass
取代 pubspec.yaml 中的 pluginClass
。以下是針對僅限 Dart 實作修改的上述 hello_windows
範例
flutter:
plugin:
implements: hello
platforms:
windows:
dartPluginClass: HelloPluginWindows
在此版本中,您將沒有 C++ Windows 程式碼,而是會以 HelloPluginWindows
類別對 hello
外掛程式的 Dart 平台介面類別進行子類別化,其中包含靜態 registerWith()
方法。此方法會在啟動期間呼叫,可用於註冊 Dart 實作
class HelloPluginWindows extends HelloPluginPlatform {
/// Registers this class as the default instance of [HelloPluginPlatform].
static void registerWith() {
HelloPluginPlatform.instance = HelloPluginWindows();
}
混合平台實作
#平台實作也可以同時使用 Dart 和特定平台的語言。例如,外掛程式可以為每個平台使用不同的平台通道,以便可以針對每個平台自訂通道。
混合實作會使用上述的兩個註冊系統。以下是針對混合實作修改的上述 hello_windows
範例
flutter:
plugin:
implements: hello
platforms:
windows:
dartPluginClass: HelloPluginWindows
pluginClass: HelloPlugin
Dart HelloPluginWindows
類別會針對僅限 Dart 的實作使用上述的 registerWith()
,而 C++ HelloPlugin
類別則會與僅限 C++ 的實作相同。
測試你的外掛
#我們建議您使用自動化測試來測試外掛程式,以確保當您變更程式碼時,功能不會退步。
若要深入瞭解如何測試外掛程式,請查看測試外掛程式。如果您正在撰寫 Flutter 應用程式的測試,並且外掛程式導致當機,請查看外掛程式中的 Flutter 測試。
開發 FFI 外掛套件
#如果您想要開發使用 Dart 的 FFI 呼叫原生 API 的套件,則需要開發 FFI 外掛程式套件。
FFI 外掛程式套件和非 FFI 外掛程式套件都支援搭售原生程式碼。但是,FFI 外掛程式套件不支援方法通道,但支援方法通道註冊程式碼。若要實作同時使用方法通道和 FFI 的外掛程式,請使用非 FFI 外掛程式。每個平台可以使用 FFI 或非 FFI 平台。
步驟 1:建立套件
#若要建立啟動器 FFI 外掛程式套件,請搭配 flutter create
使用 --template=plugin_ffi
旗標
flutter create --template=plugin_ffi hello
這會在 hello
資料夾中建立一個具有下列特殊內容的 FFI 外掛程式專案
lib:定義外掛程式 API 的 Dart 程式碼,以及使用 dart:ffi
呼叫原生程式碼的程式碼。
src:原生原始碼,以及用於將該原始碼建置到動態程式庫的 CMakeLists.txt
檔案。
平台資料夾(android
、ios
、windows
等):用於建置和搭售具有平台應用程式的原生程式碼程式庫的建置檔案。
步驟 2:建構和綑綁原生程式碼
#pubspec.yaml
如下所示指定 FFI 外掛程式
plugin:
platforms:
some_platform:
ffiPlugin: true
此設定會針對各種目標平台叫用原生建置,並使用這些 FFI 外掛程式搭售 Flutter 應用程式中的二進位檔。
這可以與 dartPluginClass
結合使用,例如當 FFI 用於聯合外掛程式中一個平台的實作時
plugin:
implements: some_other_plugin
platforms:
some_platform:
dartPluginClass: SomeClass
ffiPlugin: true
外掛程式可以同時具有 FFI 和方法通道
plugin:
platforms:
some_platform:
pluginClass: SomeName
ffiPlugin: true
由 FFI(和方法通道)外掛程式叫用的原生建置系統如下
- 對於 Android:Gradle,會針對原生建置叫用 Android NDK。
- 請參閱
android/build.gradle
中的文件。
- 請參閱
- 對於 iOS 和 macOS:Xcode,使用 CocoaPods。
- 請參閱
ios/hello.podspec
中的文件。 - 請參閱
macos/hello.podspec
中的文件。
- 請參閱
- 對於 Linux 和 Windows:CMake。
- 請參閱
linux/CMakeLists.txt
中的文件。 - 請參閱
windows/CMakeLists.txt
中的文件。
- 請參閱
步驟 3:綁定到原生程式碼
#若要使用原生程式碼,需要 Dart 中的繫結。
若要避免手動撰寫這些程式碼,它們會由 package:ffigen
從標頭檔案 (src/hello.h
) 產生。請參閱 ffigen 文件,以取得如何安裝此套件的資訊。
執行以下程式碼來重新產生繫結
dart run ffigen --config ffigen.yaml
步驟 4:呼叫原生程式碼
#可以從任何隔離區直接叫用執行時間非常短的原生函式。如需範例,請參閱 lib/hello.dart
中的 sum
。
應該在協助程式隔離區上叫用執行時間較長的函式,以避免在 Flutter 應用程式中丟失影格。如需範例,請參閱 lib/hello.dart
中的 sumAsync
。
加入文件
#建議的做法是將下列文件新增至所有套件
- 介紹套件的
README.md
檔案 - 記錄每個版本變更的
CHANGELOG.md
檔案 - 包含授權套件條款的
LICENSE
檔案 - 所有公開 API 的 API 文件(請參閱下方詳細資訊)
API 文件
#當您發佈套件時,API 文件會自動產生並發佈至 pub.dev/documentation。例如,請參閱 device_info_plus
的文件。
如果您想要在本機開發機器上產生 API 文件,請使用下列命令
將目錄變更為您的套件所在位置
cd ~/dev/mypackage
告知文件工具 Flutter SDK 的位置(請變更以下命令以反映您放置它的位置)
export FLUTTER_ROOT=~/dev/flutter # on macOS or Linux set FLUTTER_ROOT=~/dev/flutter # on Windows
- 執行 `dart doc` 工具(包含在 Flutter SDK 中),如下所示
$FLUTTER_ROOT/bin/cache/dart-sdk/bin/dart doc # on macOS or Linux %FLUTTER_ROOT%\bin\cache\dart-sdk\bin\dart doc # on Windows
如需如何撰寫 API 文件的提示,請參閱有效的 Dart 文件。
將授權加入 LICENSE 檔案
#每個 LICENSE 檔案內的個別授權應以單獨一行上的 80 個連字號分隔。
如果 LICENSE 檔案包含多個元件授權,則每個元件授權都必須以該元件授權所適用的套件名稱開始,每個套件名稱各佔一行,並且套件名稱列表與實際授權文字之間以空白行分隔。(套件名稱不一定要與 pub 套件的名稱相符。例如,一個套件本身可能包含來自多個第三方來源的程式碼,並且可能需要包含每個來源的授權。)
以下範例顯示一個組織良好的授權檔案
package_1
<some license text>
--------------------------------------------------------------------------------
package_2
<some license text>
以下是另一個組織良好的授權檔案範例
package_1
<some license text>
--------------------------------------------------------------------------------
package_1
package_2
<some license text>
以下是一個組織不佳的授權檔案範例
<some license text>
--------------------------------------------------------------------------------
<some license text>
另一個組織不佳的授權檔案範例
package_1
<some license text>
--------------------------------------------------------------------------------
<some license text>
發佈你的套件
#一旦您實作了套件,您就可以在 pub.dev 上發佈它,以便其他開發人員可以輕鬆使用它。
在發佈之前,請務必檢查 pubspec.yaml
、README.md
和 CHANGELOG.md
檔案,以確保它們的內容完整且正確。此外,為了提高您套件的品質和可用性(並使其更有可能獲得 Flutter 最愛的地位),請考慮加入以下項目
- 多樣化的程式碼使用範例
- 螢幕截圖、動畫 GIF 或影片
- 指向對應程式碼儲存庫的連結
接下來,以 dry-run
模式執行發佈命令,以查看所有內容是否通過分析
flutter pub publish --dry-run
下一步是發佈到 pub.dev,但請確保您已準備好,因為發佈是永久的
flutter pub publish
有關發佈的更多詳細資訊,請參閱 dart.dev 上的 發佈文件。
處理套件之間的相依性
#如果您正在開發一個名為 hello
的套件,該套件依賴於另一個套件公開的 Dart API,您需要將該套件新增到 pubspec.yaml
檔案的 dependencies
區段。以下程式碼使 url_launcher
外掛程式的 Dart API 可供 hello
使用
dependencies:
url_launcher: ^5.0.0
您現在可以在 hello
的 Dart 程式碼中 import 'package:url_launcher/url_launcher.dart'
和 launch(someUrl)
。
這與您在 Flutter 應用程式或任何其他 Dart 專案中包含套件的方式沒有任何不同。
但是,如果 hello
碰巧是一個外掛程式套件,其平台特定程式碼需要存取 url_launcher
公開的平台特定 API,您還需要將適當的相依性宣告新增到您的平台特定建置檔案中,如下所示。
Android
#以下範例在 hello/android/build.gradle
中設定 url_launcher
的相依性
android {
// lines skipped
dependencies {
compileOnly rootProject.findProject(":url_launcher")
}
}
您現在可以在 hello/android/src
的原始碼中 import io.flutter.plugins.urllauncher.UrlLauncherPlugin
並存取 UrlLauncherPlugin
類別。
有關 build.gradle
檔案的更多資訊,請參閱有關建置指令碼的 Gradle 文件。
iOS
#以下範例在 hello/ios/hello.podspec
中設定 url_launcher
的相依性
Pod::Spec.new do |s|
# lines skipped
s.dependency 'url_launcher'
您現在可以在 hello/ios/Classes
的原始碼中 #import "UrlLauncherPlugin.h"
並存取 UrlLauncherPlugin
類別。
有關 .podspec
檔案的更多詳細資訊,請參閱 CocoaPods 文件。
Web
#所有網頁相依性都由 pubspec.yaml
檔案處理,就像任何其他 Dart 套件一樣。
除非另有說明,否則本網站上的文件反映了 Flutter 的最新穩定版本。頁面最後更新於 2024-11-20。 檢視原始碼 或 回報問題。