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 PR fixes Issue #9
Changes
kotlinx.serialization
andcom.chrynan.parcelable
dependencies so that users of the library will not have to manually include those dependencies as they are now transitiveParcelable
object instead of theparcelable
parameter value in therememberSavableNavigator
functionsKSerializer
forNavigator
NavigationEvent
s andNavigationEvent.Forward
sealed classesIssue Description
Issue #9 was occurring because of the way kotlinx.serialization handles sealed class polymorphic serialization with generic types. The generated serializer for sealed classes with generic types, apparently requires manually registering every type that will be used with that class. This is not very flexible, so to fix this, I created a
NavigationEvent.Snapshot
class that was not serializable and contained all the values everyNavigationEvent
could have. Then I implemented custom serializers forNavigationEvent
and its subclassNavigationEvent.Forward
(which too is a sealed class) and delegated to theNavigationEvent.Snapshot
generated serializer, converting that to and from the appropriate types. This seemed to solve the issue.