render method

  1. @override
void render(
  1. Rect area,
  2. Buffer buffer,
  3. RenderContext ctx
)
override

Implementation

@override
void render(Rect area, Buffer buffer, RenderContext ctx) {
  final entry = ctx.async_.useFuture<Result<T, E>>(key, future);
  Widget widget;
  switch (entry.status) {
    case AsyncStatus.success:
      final r = entry.value as Result<T, E>;
      widget = switch (r) {
        Ok(:final value) => onSuccess(value),
        Err(:final error) => onFailure(error),
      };
    case AsyncStatus.error:
      widget = onError(entry.error ?? 'unknown', entry.stack);
    case AsyncStatus.loading:
    case AsyncStatus.unknown:
    case AsyncStatus.failure:
      widget = onLoading();
  }
  ctx.draw(widget, area);
}