splitNamed<R> method

R? splitNamed<R>({
  1. R on1(
    1. X1
    )?,
  2. R on2(
    1. X2
    )?,
  3. R on3(
    1. X3
    )?,
  4. R onOther(
    1. Object?
    )?,
  5. R onInvalid(
    1. Object?
    )?,
})

Implementation

R? splitNamed<R>({
  R Function(X1)? on1,
  R Function(X2)? on2,
  R Function(X3)? on3,
  R Function(Object?)? onOther,
  R Function(Object?)? onInvalid,
}) {
  var v = value;
  if (v is X1) return (on1 ?? onOther)?.call(v);
  if (v is X2) return (on2 ?? onOther)?.call(v);
  if (v is X3) return (on3 ?? onOther)?.call(v);
  if (onInvalid != null) return onInvalid(v);
  throw InvalidUnionTypeException(
    "Union3<$X1, $X2, $X3>",
    value,
  );
}