小编Fev*_*ver的帖子

jetpack 撰写stateflow不刷新列表

在我的项目中,我有两个片段。

一个是 a normal fragment,另一个是 a bottomSheetDialogFragment

在我的中normal fragment,我有一个lazyColumn。

我想在 BottomSheetDialogFragment 中进行一些设置并创建一个新Hiit对象并将其放入hiitItems我的viewmodel.

问题是,由于我的部分被 覆盖normal fragment,当我的列表更改时,jetpack compose 将不会重新组合。bottomSheetDialogFragment

所以我决定转向考虑stateFlow到它总是在触发,并且我认为这可能会导致重组。但不幸的是,事实并非如此。

下面是我的代码:

// in my viewmodel
// using stateflow to hold the list of hiitItems 
    private var _hiitItems = MutableStateFlow(mutableListOf(HiitItem()))
    val hiitItems = _hiitItems
Run Code Online (Sandbox Code Playgroud)

在我的中normal fragment,我使用 composeView 来利用jetpack compose

 setContent {

// get hiitItems
val hiitItems by vm.hiitItems.collectAsState()
...

 // lazyColumn
LazyColumn(modifier …
Run Code Online (Sandbox Code Playgroud)

android-jetpack-compose kotlin-stateflow

3
推荐指数
1
解决办法
3585
查看次数