我刚开始使用 jetpack compose,我遇到了这个问题。我有一个 LazyVerticalGrid,它是从从 firestore 数据库中获取的列表中填充的,当我通过应用程序删除一个项目时,视图会更新并且不会显示已删除的项目,但是如果我单击位于该位置的另一个项目已删除的项目,在日志中我看到对已删除项目的引用,如果我单击下一个项目,我会看到上一个被选中。就好像删除元素的“幽灵”仍然存在并且索引被扭曲一样。
在BrandViewModel我有:
val brands = storageService.brands
在StorageService:
val brands: Flow<List<Brand>>
在StorageServiceImpl中:
override val brands: Flow<List<Brand>>
get() =auth.currentUser.flatMapLatest { user ->
currentBrandCollection(user.id).snapshots().map { snapshot -> snapshot.toObjects() }
}
在品牌屏幕:
val brands by viewModel.brands.collectAsStateWithLifecycle(initialValue = emptyList())
..........
LazyVerticalGrid(
state = listGridState,
modifier = Modifier
.padding(vertical = 4.dp)
.padding(horizontal = 4.dp)
.background(MaterialTheme.colorScheme.background)
.padding(contentPadding),
columns = GridCells.Adaptive(minSize = 124.dp),
) {
itemsIndexed(brands) { index, brandItem->
..........