whenOrNull<TResult extends Object?> method

  1. @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
  1. TResult? getLink(
    1. String terminalId,
    2. String mid,
    3. double amount,
    4. String name,
    5. int mobile,
    6. String txnType,
    7. String paymentMode,
    8. String currency,
    9. String udf4,
    10. String udf5,
    11. String udf6,
    12. String udf7,
    13. String udf8,
    14. String udf9,
    15. String udf10,
    16. String callbackUrl,
    17. String ru,
    18. String email,
    19. String merchantTransactionId,
    20. String transactionDate,
    21. String productType,
    22. String txnNote,
    )?,
  2. TResult? getInvoiceStatus(
    1. PgStatusRequest request
    )?,
})

A variant of when that fallback to returning null

It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case _:
    return null;
}

Implementation

@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>({TResult? Function( String terminalId,  String mid,  double amount,  String name,  int mobile,  String txnType,  String paymentMode,  String currency,  String udf4,  String udf5,  String udf6,  String udf7,  String udf8,  String udf9,  String udf10,  String callbackUrl,  String ru,  String email,  String merchantTransactionId,  String transactionDate,  String productType,  String txnNote)?  getLink,TResult? Function( PgStatusRequest request)?  getInvoiceStatus,}) {final _that = this;
switch (_that) {
case _GetLink() when getLink != null:
return getLink(_that.terminalId,_that.mid,_that.amount,_that.name,_that.mobile,_that.txnType,_that.paymentMode,_that.currency,_that.udf4,_that.udf5,_that.udf6,_that.udf7,_that.udf8,_that.udf9,_that.udf10,_that.callbackUrl,_that.ru,_that.email,_that.merchantTransactionId,_that.transactionDate,_that.productType,_that.txnNote);case _GetInvoiceStatus() when getInvoiceStatus != null:
return getInvoiceStatus(_that.request);case _:
  return null;

}
}