when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult card(
    1. PaymentMethodData paymentMethodData
    ),
  2. required TResult cardFromToken(
    1. PaymentMethodDataCardFromToken paymentMethodData
    ),
  3. required TResult cardFromMethodId(
    1. PaymentMethodDataCardFromMethod paymentMethodData
    ),
  4. required TResult alipay(
    1. PaymentMethodData paymentMethodData
    ),
  5. required TResult ideal(
    1. PaymentMethodDataIdeal paymentMethodData
    ),
  6. required TResult aubecs(
    1. PaymentMethodDataAubecs paymentMethodData
    ),
  7. required TResult bancontact(
    1. PaymentMethodData paymentMethodData
    ),
  8. required TResult giroPay(
    1. PaymentMethodData paymentMethodData
    ),
  9. required TResult eps(
    1. PaymentMethodData paymentMethodData
    ),
  10. required TResult affirm(
    1. PaymentMethodData paymentMethodData
    ),
  11. required TResult grabPay(
    1. PaymentMethodData paymentMethodData
    ),
  12. required TResult p24(
    1. PaymentMethodData paymentMethodData
    ),
  13. required TResult fpx(
    1. PaymentMethodDataFpx paymentMethodData
    ),
  14. required TResult sepaDebit(
    1. PaymentMethodDataSepa paymentMethodData
    ),
  15. required TResult afterpayClearpay(
    1. PaymentMethodDataAfterPay paymentMethodData
    ),
  16. required TResult oxxo(
    1. PaymentMethodData paymentMethodData
    ),
  17. required TResult klarna(
    1. PaymentMethodData paymentMethodData
    ),
  18. required TResult payPal(
    1. PaymentMethodData paymentMethodData
    ),
  19. required TResult usBankAccount(
    1. PaymentMethodDataUsBank paymentMethodData
    ),
})

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?>({required TResult Function( PaymentMethodData paymentMethodData)  card,required TResult Function( PaymentMethodDataCardFromToken paymentMethodData)  cardFromToken,required TResult Function( PaymentMethodDataCardFromMethod paymentMethodData)  cardFromMethodId,required TResult Function( PaymentMethodData paymentMethodData)  alipay,required TResult Function( PaymentMethodDataIdeal paymentMethodData)  ideal,required TResult Function( PaymentMethodDataAubecs paymentMethodData)  aubecs,required TResult Function( PaymentMethodData paymentMethodData)  bancontact,required TResult Function( PaymentMethodData paymentMethodData)  giroPay,required TResult Function( PaymentMethodData paymentMethodData)  eps,required TResult Function( PaymentMethodData paymentMethodData)  affirm,required TResult Function( PaymentMethodData paymentMethodData)  grabPay,required TResult Function( PaymentMethodData paymentMethodData)  p24,required TResult Function( PaymentMethodDataFpx paymentMethodData)  fpx,required TResult Function( PaymentMethodDataSepa paymentMethodData)  sepaDebit,required TResult Function( PaymentMethodDataAfterPay paymentMethodData)  afterpayClearpay,required TResult Function( PaymentMethodData paymentMethodData)  oxxo,required TResult Function( PaymentMethodData paymentMethodData)  klarna,required TResult Function( PaymentMethodData paymentMethodData)  payPal,required TResult Function( PaymentMethodDataUsBank paymentMethodData)  usBankAccount,}) {final _that = this;
switch (_that) {
case _PaymentMethodParamsCard():
return card(_that.paymentMethodData);case _PaymentMethodParamsCardWithToken():
return cardFromToken(_that.paymentMethodData);case _PaymentMethodParamsCardWithMethodId():
return cardFromMethodId(_that.paymentMethodData);case _PaymentMethodParamsAlipay():
return alipay(_that.paymentMethodData);case _PaymentMethodParamsIdeal():
return ideal(_that.paymentMethodData);case _PaymentMethodParamsAubecs():
return aubecs(_that.paymentMethodData);case _PaymentMethodParamsBankContact():
return bancontact(_that.paymentMethodData);case _PaymentMethodParamsGiroPay():
return giroPay(_that.paymentMethodData);case _PaymentMethodParamsEps():
return eps(_that.paymentMethodData);case _PaymentMethodParamsAffirm():
return affirm(_that.paymentMethodData);case _PaymentMethodParamsPay():
return grabPay(_that.paymentMethodData);case _PaymentMethodParamsP24():
return p24(_that.paymentMethodData);case _PaymentMethodParamsFpx():
return fpx(_that.paymentMethodData);case _PaymentMethodParamsSepaDebit():
return sepaDebit(_that.paymentMethodData);case _PaymentMethodParamsAfterpayClearpay():
return afterpayClearpay(_that.paymentMethodData);case _PaymentMethodParamsOxxo():
return oxxo(_that.paymentMethodData);case _PaymentMethodParamsKlarna():
return klarna(_that.paymentMethodData);case _PaymentMethodParamsPayPal():
return payPal(_that.paymentMethodData);case _PaymentMethodParamsUsBankAccount():
return usBankAccount(_that.paymentMethodData);case _:
  throw StateError('Unexpected subclass');

}
}