【Compose Multiplatform 】跨平台App但Android需要context作法並搭配Koin
前言
在開發 Compose Multiplatform 專案時
我們需要處理平台特定的問題
其中會遇到一個問題是
Android 平台需要 Context 而 iOS 不需要
本文將介紹如何在使用 Koin 進行依賴注入時
成功的解決這個問題
實作方法
我們需要使用 CMP 的 expect 和 actual 關鍵字來為不同平台提供不同的實現
這邊先在commonMain建立expect
我這個例子是因為SettingDataStore需要context
而LearningViewModel需要SettingDataStore
所以建立一個expect platformModule的變數
那我預期dataStore需要拿到個context:
所以直接實作就可以
Android
在Android的啟動點去取得context
並塞進startKoin的module list裡面
iOS:
使用方法
在 commonMain 中使用koinViewModel注入的 ViewModel:
或是在module就把需要的instance用get()
去幫你產生也可以
總結
- 使用 expect 和 actual 關鍵字可以處理平台差異
- Koin 在 Compose Multiplatform 中提供了 DI 支持
- 正確處理 Context 可以讓跨平台代碼更加清晰和可維護
- 這種方法可以應用於其他平台特定的依賴注入場景
- 在實際開發中,可再根據大家自己的需求靈活調整 DI 策略