withdraw method Null safety

Future<WithdrawResponse?> withdraw(
  1. WithdrawRequest request
)

Implementation

Future<WithdrawResponse?> withdraw(WithdrawRequest request) async {
  Uri serverURI = Util.appendEndpointToUrl(_transferServiceAddress, 'withdraw');

  _WithdrawRequestBuilder requestBuilder = _WithdrawRequestBuilder(httpClient, serverURI);

  final Map<String, String> queryParams = {
    "asset_code": request.assetCode,
    "type": request.type,
    "dest": request.dest,
  };

  if (request.destExtra != null) {
    queryParams["dest_extra"] = request.destExtra!;
  }
  if (request.account != null) {
    queryParams["account"] = request.account!;
  }
  if (request.memo != null) {
    queryParams["memo"] = request.memo!;
  }
  if (request.memoType != null) {
    queryParams["memo_type"] = request.memoType!;
  }
  if (request.walletName != null) {
    queryParams["wallet_name"] = request.walletName!;
  }
  if (request.walletUrl != null) {
    queryParams["wallet_url"] = request.walletUrl!;
  }
  if (request.lang != null) {
    queryParams["lang"] = request.lang!;
  }
  if (request.onChangeCallback != null) {
    queryParams["on_change_callback"] = request.onChangeCallback!;
  }
  if (request.amount != null) {
    queryParams["amount"] = request.amount!;
  }
  if (request.countryCode != null) {
    queryParams["country_code"] = request.countryCode!;
  }

  WithdrawResponse response;
  try {
    response = await requestBuilder.forQueryParameters(queryParams).execute(request.jwt);
  } on ErrorResponse catch (e) {
    if (e.code == 403) {
      _handleForbiddenResponse(e);
    }
    throw e;
  }
  return response;
}