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コンテキストを使用します。