我最近正在研究 Compose UI,但在分页方面遇到了一些问题。
因此,我的 onListApi
委托(进行 API 调用)被连续调用多次。我不知道为什么会这样。
我需要一些帮助来处理这里的问题。
你可以在下面看到我的代码:
@Composable
fun RepoListScreen() {
val viewModel = getViewModel<RepoListViewModel>()
Surface {
RepoListView(
onListApi = { viewModel.getList() },
items = viewModel.getRepositoryResponse
)
}
}
@Composable
private fun RepoListView(
onListApi: () -> Unit,
items: LiveData<Resource<List<Repository>>>) {
val listState = items.observeAsState(initial = Resource.empty())
val list = remember { mutableStateListOf<Repository>() }
val lastIndex = list.lastIndex
val loading = remember { mutableStateOf(false) }
listState.observer(
onSuccess = { resourceList ->
resourceList?.let {
list.addAll(it)
}
},
onEmpty = {
onListApi.invoke()
},
onEveryState = { status ->
loading.value = status == Resource.Status.LOADING
}
)
LazyColumn(
verticalArrangement = Arrangement.spacedBy(4.dp)
) {
itemsIndexed(list) { index, item ->
if (lastIndex == index) {
onListApi.invoke()
}
RepoListItem(item)
}
if (loading.value) item { RepoListItemLoading() }
}
}
你知道我做错了什么吗?