implement result API based on NavBackStackEntry #56
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This removes the fragment navigation result APIs and replaces them with new result APIs that work for both fragment and compose navigation.
How the API works
Inside your navigator you register for the results like before
The new part here is that you need to specify
FooRoute
which is the route to the destination of the navigator.The returned
NavigationResultRequest
is aResultOwner
like before so the results can be collected throughimagePickerResultRequest.results
.What's new is that the request also holds a
key
. This key should be passed to the destination from which we want to retrieve a result:The image picker in this example can then call
deliverNavigationResult
with this key to return a result. To keep the API simple there is no automatic back navigation anymore like we had innavigateBackWithResult
:Advantages
FragmentNavEventNavigator
classregisterForNavigationResult
Disadvantages
SavedStateHandle
of aNavBackStackEntry
isn't as nice as the very direct Fragment API