refresh method
Fetches the node list from the Hub, updating the cache on success and retaining prior data on failure.
Implementation
Future<void> refresh() async {
final prev = state.value.data;
state.value = AsyncState.loading(data: prev, stale: prev != null);
try {
final nodes = await _service.listNodes();
_cache.write(nodes);
state.value = AsyncState.ready(nodes);
} on AppError catch (e) {
state.value = AsyncState.error(e, data: prev);
}
}