simpleBuilder<T> static method

Widget simpleBuilder<T>({
  1. Key? key,
  2. required FutureOr<T> action(),
  3. List<ScrollController> scrollControllers = const [],
  4. int maxWaitFrames = 5,
  5. bool waitForEndOfFrame = true,
  6. int endOfFramePasses = 2,
  7. Duration? timeout,
  8. Widget? loading,
  9. Widget errorBuilder(
    1. PostFrameResult<T> result
    )?,
  10. Widget dataBuilder(
    1. PostFrameResult<T> result
    )?,
})

Convenience builder returning common loading/data/error widgets.

Implementation

static Widget simpleBuilder<T>({
  Key? key,
  required FutureOr<T> Function() action,
  List<ScrollController> scrollControllers = const [],
  int maxWaitFrames = 5,
  bool waitForEndOfFrame = true,
  int endOfFramePasses = 2,
  Duration? timeout,
  Widget? loading,
  Widget Function(PostFrameResult<T> result)? errorBuilder,
  Widget Function(PostFrameResult<T> result)? dataBuilder,
}) {
  return builder<T>(
    action: action,
    scrollControllers: scrollControllers,
    maxWaitFrames: maxWaitFrames,
    waitForEndOfFrame: waitForEndOfFrame,
    endOfFramePasses: endOfFramePasses,
    timeout: timeout,
    builder: (context, snapshot) {
      if (!snapshot.hasData) {
        return loading ?? const Center(child: CircularProgressIndicator());
      }
      final result = snapshot.data!;
      if (result.canceled) {
        return errorBuilder?.call(result) ?? const Text('Canceled');
      }
      if (result.hasError) {
        return errorBuilder?.call(result) ?? Text('Error: ${result.error}');
      }
      return dataBuilder?.call(result) ?? Text('Value: ${result.value}');
    },
  );
}