errorBuilder<T> static method

dynamic errorBuilder<T>({
  1. required BuildContext context,
  2. Object? error,
  3. String defaultTextError = "Unknown error",
  4. LocalizedMessageFromException? getLocalizedMessageFromException,
  5. LocalizedMessageFromHttpResultCode? getLocalizedMessageFromHttpResultCode,
  6. ErrorNotifier? errorNotifier,
  7. ErrorViewBuilder? errorViewBuilder,
  8. PagewiseLoadController<T>? pageLoadController,
})

Implementation

static errorBuilder<T>({
  required BuildContext context,
  Object? error,
  String defaultTextError = "Unknown error",
  LocalizedMessageFromException? getLocalizedMessageFromException,
  LocalizedMessageFromHttpResultCode? getLocalizedMessageFromHttpResultCode,
  ErrorNotifier? errorNotifier,
  ErrorViewBuilder? errorViewBuilder,
  PagewiseLoadController<T>? pageLoadController,
}) {
  Resource resourceError = Resource.error(null, defaultTextError);
  try {
    if (error is Exception) {
      Exception exc = ExceptionUtils.parseException(error);
      String message = (getLocalizedMessageFromException != null
              ? getLocalizedMessageFromException(exc)
              : null) ??
          exc.toString();
      resourceError = Resource.error(null, message, exception: exc);
    } else if (error is String) {
      resourceError = Resource.error(null, error);
    }
    if (error is Resource) resourceError = error;

    if (TextUtils.isEmpty(resourceError.message)) {
      if (resourceError.exception != null) {
        Exception exc = ExceptionUtils.parseException(error);
        String message = (getLocalizedMessageFromException != null
                ? getLocalizedMessageFromException(exc)
                : null) ??
            exc.toString();
        resourceError.message = message;
      } else if (resourceError.code != null) {
        resourceError.message = (getLocalizedMessageFromHttpResultCode != null
            ? getLocalizedMessageFromHttpResultCode(resourceError.code)
            : null);
      }
    }

    if (TextUtils.isEmpty(resourceError.message)) {
      resourceError.message = defaultTextError;
    }
  } catch (e) {
    Exception exc = ExceptionUtils.parseException(error);
    String message = (getLocalizedMessageFromException != null
            ? getLocalizedMessageFromException(exc)
            : null) ??
        exc.toString();
    resourceError = Resource.error(null, message, exception: exc);
  }

  if (errorNotifier != null) {
    errorNotifier(context, resourceError);
  }
  if (errorViewBuilder != null) {
    return errorViewBuilder(
        context, resourceError.message, pageLoadController);
  }
  return Column(
    children: <Widget>[
      const Icon(
        Icons.error_outline,
        size: 32,
      ),
      const SizedBox(
        height: 4,
      ),
      Text(
        '${resourceError.message}',
        textAlign: TextAlign.center,
      ),
      const SizedBox(height: 8),
      FloatingActionButton(
          mini: true,
          onPressed: () {
            if (pageLoadController != null) {
              pageLoadController.retry();
            }
          },
          child: const Icon(
            Icons.refresh,
          )),
    ],
  );
}