小编Hyz*_*zam的帖子

重复错误时不会出现 Compose Snackbar

我是 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. 我的疑问是,是否有不同的方法来实现我想要的?

android kotlin android-snackbar android-jetpack-compose

4
推荐指数
1
解决办法
1634
查看次数

可组合项因传递的回调过多而变得臃肿

这是我当前的可组合项:

@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 钩子操作类型和操作负载

android kotlin android-jetpack-compose

2
推荐指数
1
解决办法
334
查看次数