注意- 这个问题与这个问题几乎相同。
我正在寻找更好的方法(如果有的话)。
根据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)