是一種將對不同平台的支援功能分為單獨的軟件包。所以聯合插件能夠使用針對iOS、Android、Web 甚至是針對汽車(例如在IoT 設備上)分別使用對應的package。除了這些好處之外,它還能夠讓各領域專家在他們最了解的平台上擴展現有的平台插件
聯合插件需要以下package:
app-facing package
使用插件時所依賴的package,此package 指定 Flutter 應用程序使用的 API
platform package(s)
一個或多個包含特定於平台的實作程式碼的package,由app-facing package 調用這些platform package
platform interface package
將app-facing package 連接到platform package 的package。此package 聲明了一個接口,各platform package 都必須實作該接口以支援app-facing package 。擁有定義此接口的package 可確保所有platform package 以各平台的實作程式碼來實現接口上統一定義的功能
官方推薦一個具體的例子: How to Write a Flutter Web Plugin, Part 1
理想狀況下,若想要新增平台實現至一個聯合插件時,這時將與聯合插件作者協調以引入您新增的平台實現,通過這種方式,原作者認可您的實現。
例如,假設您想要為foobar
插件新增一個Windows 平台的foobar_windows
,編寫了其Windows 平台的實現後,在認可的插件中,foobar
原作者將您的 Windows 實現添加為app-facing package 的 pubspec 中的依賴項,之後在 Flutter 應用程序中引入foobar
插件後,Windows 實現以及其他認可的實現將都可以使用
如果不想讓原始插件作者添加您的實現,那麼您的插件就沒有得到認可,在 Flutter 應用程序中仍然可以使用您的實現,但必須手動將插件添加到應用程序的 pubspec 文件中,例如,必須在應用程序的 pubspec 中引入foobar
的依賴和 對foobar_windows
以實現完整的功能依賴