showBottomSheetError static method

Future<bool> showBottomSheetError({
  1. required dynamic exception,
  2. List<String>? ignoreErrors,
  3. String? additionalInfo,
  4. String? processMessage,
  5. bool withRetryButton = false,
  6. bool isError = true,
  7. String? customCloseButtonLabel,
})

Implementation

static Future<bool> showBottomSheetError({
  required dynamic exception,
  List<String>? ignoreErrors,
  String? additionalInfo,
  String? processMessage,
  bool withRetryButton = false,
  bool isError = true,
  String? customCloseButtonLabel,
}) async {
  if (BasfLogicLocalizationUtils.appNavigatorKey.currentContext != null) {
    final String? message = _getLongExceptionMessage(exception: exception);
    final String shortMessage = _getShortExceptionMessage(
      exception: exception,
    );

    if (ignoreErrors?.any(
          (i) => (message?.contains(i) ?? false) || shortMessage.contains(i),
        ) ??
        false) {
      return false;
    }

    BuildContext context =
        BasfLogicLocalizationUtils.appNavigatorKey.currentContext!;

    final bool? retry = await showCustomModalBottomSheet(
      context: context,
      constraints: BoxConstraints(
        maxHeight: MediaQuery.of(context).size.height * 0.8,
        maxWidth: 500,
      ),
      builder: (context) {
        return WarningModalLayout(
          warningMessage: [
            if (processMessage != null) processMessage,
            shortMessage,
          ].join('\n\n'),
          additionalInfo: [
            if (message != null && shortMessage != message) message,
            if (additionalInfo != null) additionalInfo,
          ],
          customButtonLabel: customCloseButtonLabel,
          isError: isError,
          withRetryButton: withRetryButton,
        );
      },
    );
    return retry ?? false;
  } else {
    showSnackBarError(exception: exception);
    return false;
  }
}