android 如何在Jetpack Compose中返回时更新状态

8yoxcaq7  于 2023-06-20  发布在  Android
关注(0)|答案(1)|浏览(154)

如何确保在第一个屏幕中的feedList列表在第二个屏幕中添加新的提要项后更新?我使用一个navController在两个屏幕之间导航,并使用ObjectBox作为数据库。
在我的应用程序中,第一个屏幕显示一个提要列表,第二个屏幕允许我添加一个新的提要项。当我在第二个屏幕上添加新的提要项并返回到第一个屏幕时,列表不包括新添加的项。我怀疑函数viewModel.onGetFeedList()没有在适当的时间执行,它也在LaunchedEffect中。

LaunchedEffect(key1 = Unit) {
    vm.composeViewModel.onGetFeedList()
    vm.composeViewModel.getFeedCollectionList()
}

为了提供一些上下文,我使用ObjectBox作为数据库,并设置了必要的实体、DAO和一个ViewModel来处理数据操作。

fun saveSingleRecord(modal: Feed): Long {
            val obj = box().query(Feed_.mId.equal(modal.mId)).build()?.findUnique()
            if (obj == null) {
                box().put(modal)
                return 1
            } else {
    
                obj.mId = modal.mId
                obj.name = modal.name
                obj.nepaliName = modal.nepaliName
                obj.DMPercent = modal.DMPercent
                obj.MEOrMIPerKg = modal.MEOrMIPerKg
                obj.DCPPerKg = modal.DCPPerKg
                obj.NDFPercent = modal.NDFPercent
                obj.CaPerGram = modal.CaPerGram
                obj.PPerGram = modal.PPerGram
                obj.concentrate = modal.concentrate
                obj.price = modal.price
                obj.categoryId = modal.categoryId
                obj.SN = modal.SN
    
                box().put(obj)
    
                Logger.log("AFTER EDIT = ${GsonUtils.toString(obj)}")
                return 2
            }
        }

我想知道应该在何处以及何时执行viewModel.onGetFeedList(),以确保从第二个屏幕返回后,第一个屏幕显示更新后的提要列表。您能指导我如何正确地实现这一目标吗?

hof1towb

hof1towb1#

LaunchedEffect(key1 = true) {
    vm.composeViewModel.onGetFeedList()
    vm.composeViewModel.getFeedCollectionList()
}

用true代替unit。希望能帮上忙

相关问题