小编Bak*_*Bak的帖子

Jetpack Compose 从视图模型展示小吃吧 - 单个现场活动

我正在构建一个 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

5
推荐指数
1
解决办法
1024
查看次数