Comments (4)
My current workaround is:
- Pass navigator to NavigatorDisposer class, which inherits ScreenDisposable
- When Screen is disposed NavigatorDisposer also disposes navigator
Sample code:
private class NavigatorDisposer : ScreenDisposable {
var navigator: Navigator? = null
override fun onDispose(screen: Screen) {
navigator?.let { disposeNavigator(it) }
navigator = null
}
}
@Composable
private fun Screen.DisposeNavigatorOnScreenDisposeEffect(navigator: Navigator) {
val screen = this
LaunchedEffect(navigator) {
val disposer = ScreenLifecycleStore.get(screen) {
NavigatorDisposer()
}
disposer.navigator = navigator
}
}
@Composable
public fun Screen.Navigator(
screen: Screen,
disposeBehavior: NavigatorDisposeBehavior = NavigatorDisposeBehavior(),
onBackPressed: OnBackPressed = { true },
key: String = compositionUniqueId(),
content: NavigatorContent = { CurrentScreen() }
) {
Navigator(
screen = screen,
disposeBehavior = disposeBehavior,
onBackPressed = onBackPressed,
key = key,
content = { navigator ->
DisposeNavigatorOnScreenDisposeEffect(navigator)
content(navigator)
}
)
}
But I don't think this is the best way
from voyager.
What would the disposeNavigator
function be in your workaround? @shpasha
from voyager.
I believe the solution I've come up with for #402 may also help this issue.
from voyager.
What would the
disposeNavigator
function be in your workaround? @shpasha
@hristogochev you can find disposeNavigator
function implementation in voyager source codes
from voyager.
Related Issues (20)
- Wasm URL routing support HOT 1
- Lifecycle Events Not Triggered During Screen Navigation HOT 4
- ScreenModel function goes into infinite loop when calling from screen HOT 2
- Screen Overridable Content function call multipleTimes when pass data from one Screen to another in Android project.
- Crash on implementing ScreenLifecycleOwner HOT 2
- Crashing When The App Starts Up Again, After been Minimized For a period of Time HOT 1
- App Crashes, When The Button to Navigate to Another Screen, Is Pressed Twice in Succession
- Help on using new navigatorViewModel
- IllegalStateException when close window on Compose Multiplatform for Desktop
- viewmodel not destroy in recomposition state HOT 1
- TabNavigator not Allowing Theme change HOT 3
- Provide onDispose callback in the LifecycleEffectOnce api HOT 1
- ReferenceError: getCachedJsObject is not defined HOT 3
- TabNavigator inside Screen not working
- System WindowInsets Not Consumed on iOS Targets When using Nested Navigators HOT 6
- Tab Navigator Deeplink HOT 1
- Not working with latest version of compose multiplatform and kotlin HOT 1
- TabNavigator
- android.os.BadParcelableException: Parcelable encountered IOException when screen is off
- Can't switch dark theme in compose-m3 1.2.0+ and NestedNavigator HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from voyager.