在我的项目中,我有两个片段。
一个是a normal fragment,另一个是a bottomSheetDialogFragment。
在我的normal fragment,我有一个lazyColumn。
我想在 bottomSheetDialogFragment 中进行一些设置并创建一个新Hiit对象并将其放入我hiitItems的viewmodel.
问题是,由于 mynormal fragment部分被 覆盖,所以bottomSheetDialogFragment当我的列表更改时,jetpack compose 不会重新组合。
所以我决定转向stateFlow考虑到它总是在发射,我认为这可能会导致重组。但不幸的是,它没有。
以下是我的代码:
// in my viewmodel
// using stateflow to hold the list of hiitItems
private var _hiitItems = MutableStateFlow(mutableListOf(HiitItem()))
val hiitItems = _hiitItems
在我的normal fragment中,我使用 composeView 来利用jetpack compose:
setContent {
// get hiitItems
val hiitItems by vm.hiitItems.collectAsState()
...
// lazyColumn
LazyColumn(modifier = Modifier.fillMaxSize()) {
items(hiitItems) // I'm assuming auto refreshing the list here
{
ItemCard(item = it) // ItemCard is just an ordinary composable
}
}
}
在我的bottomSheetDialogFragment中,我有一个按钮,其功能是将新创建的 hiitItem 添加到我的hiitItems列表中,并导致重组:
hiitItems.add(newItem)
知道为什么在hiitItems我关闭bottomSheetDialogFragment 后列表中的更改不会导致重新组合吗?