メインコンテンツまでスキップ

Composeアプリケーションでの分離されたコンテキスト(Isolated Context)

Composeアプリケーションでは、分離されたコンテキストを使用することで、SDKやホワイトラベルアプリケーションを扱う際に、Koinの定義をエンドユーザーのものと混同させないように、同じように作業できます。

分離されたコンテキストを定義する

まず、分離されたKoinインスタンスをメモリに格納するために、分離されたコンテキストホルダーを宣言しましょう。これは、次のような単純なObjectクラスで実現できます。MyIsolatedKoinContextクラスは、Koinインスタンスを保持しています。

object MyIsolatedKoinContext {

val koinApp = koinApplication {
// declare used modules
modules(sdkAppModule)
}
}
注記

MyIsolatedKoinContextクラスは、初期化の必要に応じて調整してください。

Composeで分離されたコンテキストをセットアップする

分離されたKoinコンテキストを定義したので、Composeでそれを使用し、すべてのAPIをオーバーライドするようにセットアップできます。ルートCompose関数でKoinIsolatedContextを使用するだけです。これにより、Koinコンテキストがすべての子コンポーザブルに伝播されます。

@Composable
fun App() {
// Set current Koin instance to Compose context
KoinIsolatedContext(context = MyIsolatedKoinContext.koinApp) {

MyScreen()
}
}
備考

すべてのKoin Compose APIは、KoinIsolatedContextの使用後、分離されたKoinコンテキストを使用します。