when method
Builds UI based on the current mutation state.
idle: shown before the mutation is triggered (required)loading: shown while the mutation is running (defaults toidle)success: shown after a successful mutation (defaults toidle)error: shown after a failed mutation (defaults toidle)
Implementation
Widget when({
required Widget Function() idle,
Widget Function()? loading,
Widget Function(TData data)? success,
Widget Function(Object error)? error,
}) {
return AnimatedBuilder(
animation: Listenable.merge([status, data, this.error]),
builder: (context, _) {
switch (status.value) {
case ZenMutationStatus.loading:
return loading?.call() ?? idle();
case ZenMutationStatus.success:
final result = data.value;
return result != null ? (success?.call(result) ?? idle()) : idle();
case ZenMutationStatus.error:
final err = this.error.value;
return err != null ? (error?.call(err) ?? idle()) : idle();
case ZenMutationStatus.idle:
return idle();
}
},
);
}