map<TResult extends Object?> method

  1. @optionalTypeArgs
TResult map<TResult extends Object?>({
  1. required TResult root(
    1. RootNode value
    ),
  2. required TResult module(
    1. ModuleNode value
    ),
  3. required TResult folder(
    1. FolderNode value
    ),
  4. required TResult component(
    1. ComponentNode value
    ),
  5. required TResult documentation(
    1. DocumentationNode value
    ),
  6. required TResult story(
    1. StoryNode 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?>({
  required TResult Function(RootNode value) root,
  required TResult Function(ModuleNode value) module,
  required TResult Function(FolderNode value) folder,
  required TResult Function(ComponentNode value) component,
  required TResult Function(DocumentationNode value) documentation,
  required TResult Function(StoryNode value) story,
}) {
  final _that = this;
  switch (_that) {
    case RootNode():
      return root(_that);
    case ModuleNode():
      return module(_that);
    case FolderNode():
      return folder(_that);
    case ComponentNode():
      return component(_that);
    case DocumentationNode():
      return documentation(_that);
    case StoryNode():
      return story(_that);
  }
}