A small helper for Jetpack Compose that simplifies sending results between composables.
Install
libs.versions.toml
[versions]
navresult = "1.0.0"
[dependencies]
navresult = { group = "io.github.andannn", name = "navresult", version.ref = "navresult" }
then
dependencies {
implementation(libs.navresult)
}
Quick Start
- Inject
NavResultOwner into your composable.
val navResultOwner = rememberNavResultOwner()
CompositionLocalProvider(
LocalNavResultOwner provides navResultOwner,
) {
App()
}
- Define a request key.
const val ScreenABackResult = "screen_a_back_result"
- Register a handler with the request key.
LaunchNavResultHandler(
requestKey = ScreenABackResult,
resultSerializer = ScreenAResult.serializer(),
) { result ->
}
- Define a result type which can be marked as
@Serializable.
@Serializable
data class ScreenAResult(val id: Int, val name: String)
- Send result.
resultOwner.setNavResult(
requestKey = ScreenABackResult,
result = ScreenAResult(1, "foo"),
serializer = ScreenAResult.serializer()
)
Please see the details in this sample.