у меня получилось так:
class State<T>(private val scope: CoroutineScope, initialValue: T? = null) {
private val channel =
initialValue?.let { ConflatedBroadcastChannel(it) } ?: ConflatedBroadcastChannel()
var value: T
get() = channel.value
set(value) {
scope.launch { channel.send(value) }
}
val flow: Flow<T>
get() = channel.asFlow()
}