我是Jetpack compose的新手,当我的API调用响应出错时,我试图显示一个警报对话框,所以我使用FLOW进行数据更新。当观察我的可组合函数中的响应对象时,在错误条件下,我将此值设置为“true”并显示对话框。但我不能关闭它。我确信这不是正确的方法,因为showDialog会重新组合并设置值永远是“真”。
var showDialog by remember { mutableStateOf(false) }
个字符
有人能告诉我一个正确的处理方法吗?
我试过使用LaunchedEffect,但我得到了下面的结果。
@Composable invocations can only happen from the context of a @Composable function
型
1条答案
按热度按时间zazmityj1#
每次可组合的重新组合。它返回到
Error State
的响应,在那里你设置showDialog = true
,这会导致对话框一次又一次地重新打开。一个解决方案是当代码到达
NetworkResult
中的某个状态时,然后设置networkState = null
。因此,当可组合时重新组合。它不会执行NetworkResult.Error
代码。代码可以如下所示
字符串
networkState
应该在ViewModel
中声明。因此,networkState
不会因重组而改变或重置。