map<TResult extends Object?> method

  1. @optionalTypeArgs
TResult map<TResult extends Object?>(
  1. TResult $default(
    1. MenuButtonDefault value
    ), {
  2. required TResult webApp(
    1. MenuButtonWebApp value
    ),
  3. required TResult commands(
    1. MenuButtonCommands value
    ),
})

A switch-like method, using callbacks.

Callbacks receives the raw object, upcasted. It is equivalent to doing:

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

Implementation

@optionalTypeArgs
TResult map<TResult extends Object?>(
  TResult Function(MenuButtonDefault value) $default, {
  required TResult Function(MenuButtonWebApp value) webApp,
  required TResult Function(MenuButtonCommands value) commands,
}) {
  final _that = this;
  switch (_that) {
    case MenuButtonDefault():
      return $default(_that);
    case MenuButtonWebApp():
      return webApp(_that);
    case MenuButtonCommands():
      return commands(_that);
    case _:
      throw StateError('Unexpected subclass');
  }
}