相关疑难解决方法(0)

如何处理 Jetpack Compose 中的一次性操作?

注意- 这个问题与这个问题几乎相同。
我正在寻找更好的方法(如果有的话)。

根据Android 文档

显示瞬时消息后,UI 需要通知 ViewModel,从而导致另一个 UI 状态更新:

例如,当我在单击按钮时显示 Toast 消息时,UI 是否应该通知 ViewModel Toast 已成功显示?
这是处理诸如吐司、小吃店等一次性操作的最佳方法吗?

示例代码,

@Composable
fun OneShotOperation(
    viewmodel: OneShotOperationViewModel = viewModel(),
) {
    val context = LocalContext.current

    LaunchedEffect(
        key1 = viewmodel.toastMessage,
    ) {
        if (viewmodel.toastMessage.isNotBlank()) {
            Toast.makeText(
                context,
                viewmodel.toastMessage,
                Toast.LENGTH_SHORT,
            ).show()
            viewmodel.toastMessage = "" // Is this the correct way?
        }
    }

    Button(
        onClick = {
            viewmodel.toastMessage = "Sample Toast"
        },
    ) {
        Text(text = "Show Toast")
    }
}

class OneShotOperationViewModel …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

15
推荐指数
1
解决办法
9575
查看次数

标签 统计

android ×1

android-jetpack-compose ×1