obx method

Widget obx(
  1. NotifierBuilder<T> widget, {
  2. Widget onError(
    1. String? error
    )?,
  3. Widget? onLoading,
  4. Widget? onEmpty,
  5. WidgetBuilder? onCustom,
})

Builds a widget based on the current status.

This method returns different widgets depending on whether the status is loading, error, empty, success, or custom.

Implementation

Widget obx(
  NotifierBuilder<T> widget, {
  Widget Function(String? error)? onError,
  Widget? onLoading,
  Widget? onEmpty,
  WidgetBuilder? onCustom,
}) {
  return Observer(
    builder: (context) {
      if (status.isLoading) {
        return onLoading ?? const Center(child: CircularProgressIndicator());
      } else if (status.isError) {
        return onError != null
            ? onError(status.errorMessage)
            : Center(child: Text('An error occurred: ${status.errorMessage}'));
      } else if (status.isEmpty) {
        return onEmpty ??
            const SizedBox.shrink(); // Also can be widget(null); but is risky
      } else if (status.isSuccess) {
        return widget(value);
      } else if (status.isCustom) {
        return onCustom?.call(context) ??
            const SizedBox.shrink(); // Also can be widget(null); but is risky
      }
      return widget(value);
    },
  );
}