mapOrNull<TResult extends Object?> method

  1. @optionalTypeArgs
TResult? mapOrNull<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
    )?,
})

A variant of map that fallback to returning null.

It is equivalent to doing:

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

Implementation

@optionalTypeArgs
TResult? mapOrNull<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,
}) {
  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 null;
  }
}