launchFincra static method

Future launchFincra(
  1. BuildContext _, {
  2. required String publicKey,
  3. required String amount,
  4. required String name,
  5. required String feeBearer,
  6. required String phoneNumber,
  7. required String currency,
  8. required String email,
  9. required void onSuccess(
    1. dynamic code
    ),
  10. required void onError(
    1. dynamic code
    ),
  11. required Function onClose,
  12. Function? onAbandoned,
  13. bool showLogs = false,
  14. String? reference,
})

Implementation

static Future launchFincra(
  BuildContext _, {
  /// Public Key from your https://app.fincra.com/settings/api
  required String publicKey,

  /// amount
  required String amount,

  /// name
  required String name,

  /// feeBearer
  required String feeBearer,

  /// phoneNumber
  required String phoneNumber,

  /// currency
  required String currency,

  /// email
  required String email,

  /// Success callback
  required void Function(dynamic code) onSuccess,

  /// Error callback
  required void Function(dynamic code) onError,

  /// Triggered on Connect Widget close
  required Function onClose,

  /// Triggered on Abandoned Widget close
  Function? onAbandoned,
  bool showLogs = false,
  String? reference,
}) async =>
    showDialog(
      context: _,
      builder: (BuildContext context) {
        return Dialog(
          backgroundColor: Colors.white,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(20.0),
          ),
          child: Container(
            padding: const EdgeInsets.all(12.0),
            decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(
                25,
              ),
              color: Colors.transparent,
            ),
            child: FincraPayment(
              name: name,
              phoneNumber: phoneNumber,
              publicKey: publicKey,
              amount: amount,
              currency: currency,
              email: email,
              feeBearer: feeBearer,
              onSuccess: (data) {
                onSuccess(data);
                Future.delayed(
                  const Duration(seconds: 1),
                  () {
                    Navigator.of(context).pop();
                  },
                );
              },
              onError: onError,
              onClose: () {
                onClose();
                Navigator.of(context).pop();
              },
            ),
          ),
        );
      },
    );