maybeMap<TResult extends Object?> method

  1. @optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
  1. TResult root(
    1. RootNode value
    )?,
  2. TResult module(
    1. ModuleNode value
    )?,
  3. TResult folder(
    1. FolderNode value
    )?,
  4. TResult component(
    1. ComponentNode value
    )?,
  5. TResult documentation(
    1. DocumentationNode value
    )?,
  6. TResult story(
    1. StoryNode value
    )?,
  7. required TResult orElse(),
})

A variant of map that fallback to returning orElse.

It is equivalent to doing:

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

Implementation

@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
  TResult Function(RootNode value)? root,
  TResult Function(ModuleNode value)? module,
  TResult Function(FolderNode value)? folder,
  TResult Function(ComponentNode value)? component,
  TResult Function(DocumentationNode value)? documentation,
  TResult Function(StoryNode value)? story,
  required TResult orElse(),
}) {
  final _that = this;
  switch (_that) {
    case RootNode() when root != null:
      return root(_that);
    case ModuleNode() when module != null:
      return module(_that);
    case FolderNode() when folder != null:
      return folder(_that);
    case ComponentNode() when component != null:
      return component(_that);
    case DocumentationNode() when documentation != null:
      return documentation(_that);
    case StoryNode() when story != null:
      return story(_that);
    case _:
      return orElse();
  }
}