handleResult method
Implementation
@override
void handleResult(
ViewStateHttpData<List<T>, E> httpData, LoadType loadType) async {
if (httpData.success) {
if (loadType == LoadType.refresh) {
_currentPage = 1;
} else if (loadType == LoadType.loadMore) {
_currentPage++;
}
// 自动推断hasMore逻辑
if (_autoInferHasMore) {
_autoInferHasMoreLogic(httpData.data ?? [], loadType);
}
if (EasyUtil.isNotEmpty(httpData.data)) {
if (loadType == LoadType.refresh && getShouldClearRefresh()) {
data.clear();
}
await handleAddList(httpData, loadType);
setStateByLoadType(loadType);
} else if (loadType == LoadType.refresh) {
if (isRefreshBusy) {
setRefreshSuccessButEmpty();
} else {
setSuccessEmpty();
}
} else if (loadType == LoadType.loadMore) {
if (isLoadMoreBusy) {
setLoadMoreSuccessButEmpty();
} else {
refresh();
}
}
} else {
if (loadType == LoadType.refresh) {
_currentPage = 0;
if (getShouldClearWhenRefreshError()) {
data.clear();
refresh();
}
} else if (loadType == LoadType.loadMore) {
// 加载更多失败时,页码回退
_currentPage = _currentPage > 0 ? _currentPage - 1 : 0;
}
if (data.isEmpty) {
setError(httpData.error);
} else {
if (isRefreshBusy && loadType == LoadType.refresh) {
setRefreshError(httpData.error);
} else if (isLoadMoreBusy && loadType == LoadType.loadMore) {
setLoadMoreError(httpData.error);
} else {
refresh();
}
}
}
}