prompt method

Future<RaveResult?> prompt({
  1. required BuildContext context,
  2. required RavePayInitializer initializer,
})

Prompts the customer to input payment details if the correct parameters are passed.

context Your immediate build context.

initializer Container for the transaction parameters

Please, enable embedded_views_preview on iOS. See https://stackoverflow.com/a/55290868/6181476

Implementation

Future<RaveResult?> prompt({
  required BuildContext context,
  required RavePayInitializer initializer,
}) async {
  assert(context != null);
  assert(initializer != null);

  // Validate the initializer params
  var error = ValidatorUtils.validateInitializer(initializer);
  if (error != null) {
    return RaveResult(
        status: RaveStatus.error,
        rawResponse: {'error': error},
        message: error);
  }

  Repository.bootStrap(initializer);

  var result =  showDialog<RaveResult>(
    context: context,
    barrierDismissible: false,
    builder: (_) => Theme(
      data: _getDefaultTheme(context),
      child: RavePayWidget(),
    ),
  );

  // Return a cancelled response if result is null
  return result == null ? RaveResult(status: RaveStatus.cancelled) : result as FutureOr<RaveResult?>; //FutureOr<RaveResult>
}