executeUssd method

  1. @override
Future<UssdResponse> executeUssd(
  1. String ussdCode, {
  2. int? subscriptionId,
})
override

Executes a USSD code

ussdCode - The USSD code to execute subscriptionId - (Optional) Subscription ID (SIM slot). If not provided and there are multiple SIMs, the native selector will be shown. If there is only one SIM, it is used by default.

Implementation

@override
Future<UssdResponse> executeUssd(
  String ussdCode, {
  int? subscriptionId,
}) async {
  try {
    final Map<String, dynamic> arguments = {'ussdCode': ussdCode};
    if (subscriptionId != null) {
      arguments['subscriptionId'] = subscriptionId;
    }

    final result = await methodChannel.invokeMethod<Map<Object?, Object?>>(
      'executeUssd',
      arguments,
    );

    if (result != null) {
      return UssdResponse.fromMap(Map<String, dynamic>.from(result));
    } else {
      return UssdResponse(
        success: false,
        errorMessage: 'No response received from native code',
      );
    }
  } on PlatformException catch (e) {
    return UssdResponse(success: false, errorMessage: 'Error: ${e.message}');
  }
}