Closed SebastianAigner closed 6 months ago
Looking at the impl of eventFlow
:
public val Lifecycle.eventFlow: Flow<Lifecycle.Event>
get() = callbackFlow {
val observer = LifecycleEventObserver { _, event ->
trySend(event)
}.also { addObserver(it) }
awaitClose { removeObserver(observer) }
}.flowOn(Dispatchers.Main.immediate)
Apparently it uses Dispatchers.Main
, which is not available if you don't add coroutines-swing
to the project explicitly. Adding this dependency fixes the issue:
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.8.1")
Very strange that I'm seeing no indication (warning, error, log output) indicating this.
It's expected because kotlinx-coroutines-swing
is optional. I'll check why a warning message is missed + make sure that it's desired in docs
Rechecked what's going on here.
Compose for Desktop doesn't emit lifecycle events
It does. Even without this extra dependency. You can receive it via:
lifecycle.addObserver(object : LifecycleEventObserver {
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
println("New Event: $event")
}
})
Very strange that I'm seeing no indication (warning, error, log output) indicating this.
It looks like behavior of flowOn
function + missed Dispatchers.Main
. Example:
flowOf(1, 2, 3)
.flowOn(Dispatchers.Main.immediate)
.collect {
println("collect: $it")
}
Will print nothing and hang on collect
function without any exceptions. I guess it is out of the scope of Compose Multiplatfrom repo, but maybe worth creating YT issue for coroutines library.
Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.
1.6.10-rc03.
iOS:
Desktop:
Observed via: