我是 jetpack compose 的新手,每当我观察到的错误消息不为空时,我都会尝试显示错误信息栏。
Scaffold(scaffoldState = scaffoldState) {
LaunchedEffect(errorMessage) {
if (errorMessage != null) {
scope.launch {
scaffoldState.snackbarHostState.showSnackbar(errorMessage)
}
}
}
Column(horizontalAlignment = Alignment.CenterHorizontally) {
//some ui components inside here
}
}
Run Code Online (Sandbox Code Playgroud)
上面代码中的问题是,第一次错误消息从 null 更改为特定消息时,它看起来很好。但是,如果重复的用户操作产生相同的错误消息,则不会再次出现。
PS-我知道这是由于将errorMessageas 键放入LaunchedEffect. 我的疑问是,是否有不同的方法来实现我想要的?
这是我当前的可组合项:
@Composable
fun MyComposable(
onPress1: () -> Unit,
onPress2: () -> Unit,
onPress3: () -> Unit,
onPress4: () -> Unit,
onPress5: () -> Unit,
) {
Button(onClick = onPress1) { Text(text = "Press 1")}
Button(onClick = onPress2) { Text(text = "Press 2")}
Button(onClick = onPress3) { Text(text = "Press 3")}
Button(onClick = onPress4) { Text(text = "Press 4")}
Button(onClick = onPress5) { Text(text = "Press 5")}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法减少这种情况,类似于反应如何使用 useReducer 钩子操作类型和操作负载