when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>(
  1. TResult $default(
    1. String merchantCountryCode,
    2. String currencyCode,
    3. List<String>? additionalEnabledNetworks,
    4. List<ApplePayCartSummaryItem> cartItems,
    5. List<ApplePayContactFieldsType>? requiredShippingAddressFields,
    6. List<ApplePayContactFieldsType>? requiredBillingContactFields,
    7. List<ApplePayShippingMethod>? shippingMethods,
    8. List<ApplePayMerchantCapability>? merchantCapabilities,
    9. ApplePayShippingType? shippingType,
    10. List<String>? supportedCountries,
    11. bool? supportsCouponCode,
    12. String? couponCode,
    13. PaymentRequestType? request,
    )
)

A switch-like method, using callbacks.

As opposed to map, this offers destructuring. It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case Subclass2(:final field2):
    return ...;
}

Implementation

@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String merchantCountryCode,  String currencyCode,  List<String>? additionalEnabledNetworks,  List<ApplePayCartSummaryItem> cartItems,  List<ApplePayContactFieldsType>? requiredShippingAddressFields,  List<ApplePayContactFieldsType>? requiredBillingContactFields,  List<ApplePayShippingMethod>? shippingMethods,  List<ApplePayMerchantCapability>? merchantCapabilities,  ApplePayShippingType? shippingType,  List<String>? supportedCountries,  bool? supportsCouponCode,  String? couponCode,  PaymentRequestType? request)  $default,) {final _that = this;
switch (_that) {
case _ApplePayParams():
return $default(_that.merchantCountryCode,_that.currencyCode,_that.additionalEnabledNetworks,_that.cartItems,_that.requiredShippingAddressFields,_that.requiredBillingContactFields,_that.shippingMethods,_that.merchantCapabilities,_that.shippingType,_that.supportedCountries,_that.supportsCouponCode,_that.couponCode,_that.request);case _:
  throw StateError('Unexpected subclass');

}
}