showCardReceipt method

Future<void> showCardReceipt({
  1. required BuildContext context,
  2. required TransactionDetailsSettings settings,
})

Shows the card payment receipt dialog.

Displays a modal dialog containing transaction details for card payments. Uses the Amwal SDK navigator and includes localization support.

Parameters:

  • context: The build context for showing the dialog
  • settings: Configuration for the transaction details display

Example:

await ReceiptHandler.instance.showCardReceipt(
  context: context,
  settings: TransactionDetailsSettings(
    transactionId: 'TXN456',
    amount: 250.0,
    locale: Locale('en'),
  ),
);

Implementation

Future<void> showCardReceipt({
  required BuildContext context,
  required TransactionDetailsSettings settings,
}) async {
  Logar.debug('showCardReceipt starting', tag: 'RECEIPT_HANDLER');
  try {
    final navigator = AmwalSdkNavigator.amwalNavigatorObserver.navigator;
    Logar.debug(
      'Navigator state',
      tag: 'RECEIPT_HANDLER',
      data: {'available': navigator != null},
    );

    if (navigator != null) {
      Logar.debug('Pushing dialog route', tag: 'RECEIPT_HANDLER');
      await Navigator.of(navigator.context).push(
        DialogRoute(
          context: navigator.context,
          builder: (BuildContext context) {
            Logar.debug(
              'Building TransactionStatusDialog',
              tag: 'RECEIPT_HANDLER',
            );
            return Localizations(
              delegates:
                  AppLocalizationsSetup.localizationsDelegates.toList(),
              locale: settings.locale,
              child: TransactionStatusDialog(
                settings: settings.copyWith(
                  onClose: () {
                    Logar.debug(
                      'Dialog closed, popping navigators',
                      tag: 'RECEIPT_HANDLER',
                    );
                    Navigator.pop(navigator.context);
                    Logar.info(
                      'Navigator popped from receipt handler context',
                      tag: 'NAVIGATION',
                    );
                    Navigator.pop(navigator.context);
                    Logar.info(
                      'Navigator popped from receipt handler context',
                      tag: 'NAVIGATION',
                    );
                    Navigator.pop(navigator.context);
                    Logar.info(
                      'Navigator popped from receipt handler context',
                      tag: 'NAVIGATION',
                    );
                    Logar.debug(
                      'All navigators popped',
                      tag: 'RECEIPT_HANDLER',
                    );
                  },
                ),
              ),
            );
          },
          barrierDismissible: false,
        ),
      );
      Logar.debug('Dialog route pushed successfully', tag: 'RECEIPT_HANDLER');
    } else {
      Logar.warning('No navigator available', tag: 'RECEIPT_HANDLER');
    }
  } catch (e, stackTrace) {
    Logar.error(
      'showCardReceipt error',
      tag: 'RECEIPT_HANDLER',
      error: e,
      stackTrace: stackTrace,
    );
  }
}