我正在构建一个 jetpack compose 应用程序,我希望我的视图模型告诉我的 compose 函数通过向它发送一个事件来显示一个小吃店。我已经阅读了多篇关于 Kotlin 单一实时事件案例的博客文章,我尝试使用 Compose 和 Kotlin Flow 来实现它。我设法从视图模型发送事件(我在日志中看到它),但我不知道如何在可组合函数中接收它。有人可以帮我弄清楚吗?这是我的实现。
class HomeViewModel() : ViewModel() {
sealed class Event {
object ShowSheet : Event()
object HideSheet : Event()
data class ShowSnackBar(val text: String) : Event()
}
private val eventChannel = Channel<Event>(Channel.BUFFERED)
val eventsFlow: Flow<Event> = eventChannel.receiveAsFlow()
fun showSnackbar() {
Timber.d("Show snackbar button pressed")
viewModelScope.launch {
eventChannel.send(Event.ShowSnackBar("SnackBar"))
}
}
}
Run Code Online (Sandbox Code Playgroud)
@Composable
fun HomeScreen(
viewModel: HomeViewModel,
) {
val context = LocalContext.current
val scaffoldState = rememberScaffoldState()
val sheetState = rememberModalBottomSheetState(ModalBottomSheetValue.Hidden) …Run Code Online (Sandbox Code Playgroud) events android kotlin android-viewmodel android-jetpack-compose