在我的意见视图模型中:
val labels = MutableStateFlow<MutableList<String>>(mutableListOf())
当操作来自UI(来自BottomSheet项)时,我将项添加到列表中:
state.labels.value.add("Lorem Ipsu")
My main @可组合:
fun OpinionScreen(viewModel: OpinionViewModel) {
val scrollState = rememberScrollState()
val bottomState = rememberModalBottomSheetState(ModalBottomSheetValue.Hidden)
val items by viewModel.state.labels.collectAsState()
AppTheme(isSystemInDarkTheme()) {
ModalBottomSheetLayout(
sheetState = bottomState,
sheetContent = { AddPhotoBottomSheet()}) {
Scaffold(
topBar = { TopBar()},
content = {
Box(
modifier = Modifier.fillMaxSize()
) {
Column(
modifier = Modifier
.fillMaxWidth()
.wrapContentHeight()
.verticalScroll(scrollState)
) {
FirstSection()
HowLongUsageSection(photos)
ThirdSection()
}
}
})
}
}
}
@可组合部分:
fun HowLongUsageSection(labels: MutableList<String>) {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(top = 10.dp, start = 10.dp, end = 10.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
labels.forEach {
Text(text = it, color = Color.Blue)
}
}
问题是没有重组发生。我需要返回并再次打开UI以查看添加的项目。我是否遗漏了一些内容或问题与底部工作表有关?
1条答案
按热度按时间9lowa7mx1#
问题是当您修改MutableList的内容时,它不会改变(引用仍然保持不变)。要解决这个问题,请使用List而不是MutableList。
若要向其中添加元素,请执行以下操作:
现在,状态流将发出一个新值,您的UI将得到更新。