iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
Mobile Development

Flutter - 從 Packages & Plugins 掌握原生系列 第 3

Day03 Federated plugins (聯合插件)

Federated plugins (聯合插件)

是一種將對不同平台的支援功能分為單獨的軟件包。所以聯合插件能夠使用針對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

Endorsed federated plugin(認可的聯合插件)

理想狀況下,若想要新增平台實現至一個聯合插件時,這時將與聯合插件作者協調以引入您新增的平台實現,通過這種方式,原作者認可您的實現。

例如,假設您想要為foobar插件新增一個Windows 平台的foobar_windows ,編寫了其Windows 平台的實現後,在認可的插件中,foobar原作者將您的 Windows 實現添加為app-facing package 的 pubspec 中的依賴項,之後在 Flutter 應用程序中引入foobar插件後,Windows 實現以及其他認可的實現將都可以使用

Non-endorsed federated plugin(未經認可的聯合插件)

如果不想讓原始插件作者添加您的實現,那麼您的插件就沒有得到認可,在 Flutter 應用程序中仍然可以使用您的實現,但必須手動將插件添加到應用程序的 pubspec 文件中,例如,必須在應用程序的 pubspec 中引入foobar的依賴foobar_windows以實現完整的功能依賴


上一篇
Day02 Package的 類別
下一篇
Day04 指定插件所支援的平台
系列文
Flutter - 從 Packages & Plugins 掌握原生30

尚未有邦友留言

立即登入留言