statefulBuilder method

Widget statefulBuilder({
  1. Key? key,
  2. required ShimmerBuilder shimmer,
  3. required StatefulValueBuilder<T, E> builder,
  4. required StatefulFailureBuilder<T, E> failureBuilder,
  5. required Widget emptyBuilder(),
})

Builds a widget from this Stream<StatefulData<T, E>>.

The stream is passed to StatefulDataStreamBuilder, which renders different UI branches depending on the current StatefulData lifecycle state.

key is forwarded to the created StatefulDataStreamBuilder.

shimmer is used when there is no usable value yet and the UI should show a loading placeholder.

builder is used when the lifecycle contains a usable value.

The builder callback must be written like this:

builder: (value, inProgress, {error}) {
  return YourWidget(
    value: value,
    inProgress: inProgress,
    error: error,
  );
}

Important: error is a named callback parameter. Use {error}, not error as a third positional parameter.

Correct:

builder: (value, inProgress, {error}) => YourWidget(
  value: value,
  inProgress: inProgress,
  error: error,
)

Wrong:

builder: (value, inProgress, error) => YourWidget(...)

failureBuilder is used when the lifecycle is Failure and there is no previous usable value.

emptyBuilder is used when the lifecycle is Empty.

Implementation

Widget statefulBuilder({
  Key? key,
  required ShimmerBuilder shimmer,
  required StatefulValueBuilder<T, E> builder,
  required StatefulFailureBuilder<T, E> failureBuilder,
  required Widget Function() emptyBuilder,
}) {
  return StatefulDataStreamBuilder<T, E>(
    key: key,
    stream: this,
    shimmer: shimmer,
    builder: builder,
    failureBuilder: failureBuilder,
    emptyBuilder: emptyBuilder,
  );
}