splitNamed<R> method

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

Implementation

R? splitNamed<R>({
  R Function(X1)? on1,
  R Function(X2)? on2,
  R Function(X3)? on3,
  R Function(X4)? on4,
  R Function(X5)? on5,
  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 (v is X4) return (on4 ?? onOther)?.call(v);
  if (v is X5) return (on5 ?? onOther)?.call(v);
  if (onInvalid != null) return onInvalid(v);
  throw InvalidUnionTypeException(
    "Union5<$X1, $X2, $X3, $X4, $X5>",
    value,
  );
}