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 on6(
    1. X6
    )?,
  7. R on7(
    1. X7
    )?,
  8. R on8(
    1. X8
    )?,
  9. R onOther(
    1. Object?
    )?,
  10. 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(X6)? on6,
  R Function(X7)? on7,
  R Function(X8)? on8,
  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 (v is X6) return (on6 ?? onOther)?.call(v);
  if (v is X7) return (on7 ?? onOther)?.call(v);
  if (v is X8) return (on8 ?? onOther)?.call(v);
  if (onInvalid != null) return onInvalid(v);
  throw InvalidUnionTypeException(
    "Union8<$X1, $X2, $X3, $X4, $X5, $X6, $X7, $X8>",
    value,
  );
}