rememberAnsweringNavigator

inline fun <T : PopResult> rememberAnsweringNavigator(    fallbackNavigator: Navigator,     noinline block: suspend CoroutineScope.(result: T) -> Unit): GoToNavigator(source)
inline fun <T : PopResult> rememberAnsweringNavigator(    backStack: BackStack<out BackStack.Record>,     noinline block: suspend CoroutineScope.(result: T) -> Unit): GoToNavigator(source)

A reified version of rememberAnsweringNavigator. See documented overloads of this function for more information.


fun <T : PopResult> rememberAnsweringNavigator(    fallbackNavigator: Navigator,     resultType: KClass<T>,     block: suspend CoroutineScope.(result: T) -> Unit): GoToNavigator(source)

Returns a GoToNavigator that answers with the given resultType or defaults to fallbackNavigator if no back stack is available to pass results through.


fun <T : PopResult> rememberAnsweringNavigator(    backStack: BackStack<out BackStack.Record>,     resultType: KClass<T>,     block: suspend CoroutineScope.(result: T) -> Unit): GoToNavigator(source)

Returns a GoToNavigator that answers with the given resultType using the given backStack.

Handling of the result type T should be handled in the block parameter and is guaranteed to only be called at most once. It may never be called if the navigated screen never pops with a result (of equivalent type) back.

Note that resultType is a simple instance check, so subtypes may also be valid answers.

Example

val pickPhotoNavigator = rememberAnsweringNavigator(backStack, PickPhotoScreen.Result::class) { result: PickPhotoScreen.Result ->
  // Do something with the result!
}

return State(...) { event ->
  when (event) {
    is PickPhoto -> pickPhotoNavigator.goTo(PickPhotoScreen)
  }
}

// In PickPhotoScreen
navigator.pop(PickPhotoScreen.Result(...))