createTransactionSync function
Implementation
PendingTransactionDescription createTransactionSync(
{required String address,
String? amount,
String paymentId = '',
int priorityRaw = 1,
int subaddrAccount = 0}) {
final addressPointer = address.toNativeUtf8().cast<Char>();
final amountPointer = null != amount
? amount.toNativeUtf8().cast<Char>()
: Pointer<Char>.fromAddress(nullptr.address);
final paymentIdPointer = paymentId.toNativeUtf8().cast<Char>();
final pendingTransactionPointer = calloc<ExternPendingTransactionRaw>();
final errorBoxPointer = monero_flutter.buildErrorBoxPointer();
monero_flutter.bindings.transaction_create(
addressPointer,
paymentIdPointer,
amountPointer,
priorityRaw,
subaddrAccount, // TODO - глянуть имя!
pendingTransactionPointer,
errorBoxPointer);
final errorInfo = monero_flutter.extractErrorInfo(errorBoxPointer);
calloc.free(addressPointer);
calloc.free(paymentIdPointer);
if (amountPointer.address != nullptr.address) {
calloc.free(amountPointer);
}
if (0 != errorInfo.code) {
calloc.free(pendingTransactionPointer);
throw CreationTransactionException(message: errorInfo.getErrorMessage());
}
final pendingTransactionDescription = PendingTransactionDescription(
amount: pendingTransactionPointer.ref.amount,
fee: pendingTransactionPointer.ref.fee,
hash: pendingTransactionPointer.ref.hash.cast<Utf8>().toDartString(),
hex: pendingTransactionPointer.ref.hex.cast<Utf8>().toDartString(),
txKey: pendingTransactionPointer.ref.tx_key.cast<Utf8>().toDartString(),
multisigSignData: pendingTransactionPointer.ref.multisig_sign_data
.cast<Utf8>()
.toDartString(),
pointerAddress: pendingTransactionPointer.address);
return pendingTransactionDescription;
}