refresh method
Future<void>
refresh(
)
override
Implementation
@override
Future<void> refresh() async {
if (_isDisposed || _state.isRefreshing || _state.isLoadingMore) return;
final operation = ++_operationGeneration;
_state.updateState(isRefreshing: true, pageNum: 1);
_state.clearError();
if (!_isDisposed) {
notifyListeners();
}
try {
final response = await loadData();
if (_isDisposed || operation != _operationGeneration) return;
_state.clear();
_state.addData(response.data);
_state.updateState(
pageNum: _state.pageNum + 1,
hasMore: _hasMoreData(response),
initialRefresh: false,
isRefreshing: false,
);
refreshController.refreshCompleted();
} catch (e) {
if (_isDisposed || operation != _operationGeneration) return;
_state.updateState(
hasMore: false,
isRefreshing: false,
error: e.toString(),
);
refreshController.refreshFailed();
} finally {
if (!_isDisposed) {
notifyListeners();
}
}
}