errorBuilder<T> static method
dynamic
errorBuilder<T>({
- required BuildContext context,
- Object? error,
- String defaultTextError = "Unknown error",
- LocalizedMessageFromException? getLocalizedMessageFromException,
- LocalizedMessageFromHttpResultCode? getLocalizedMessageFromHttpResultCode,
- ErrorNotifier? errorNotifier,
- ErrorViewBuilder? errorViewBuilder,
- 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,
)),
],
);
}