when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult string(
    1. String labelBuilder(
      1. T data
      ),
    2. ListDataTileStyle? style
    ),
  2. required TResult custom(
    1. Widget builder(
      1. BuildContext context,
      2. T data,
      3. ListTileMetadata metadata
      )
    ),
})

A switch-like method, using callbacks.

As opposed to map, this offers destructuring. It is equivalent to doing:

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

Implementation

@optionalTypeArgs TResult when<TResult extends Object?>({required TResult Function( String Function(T data) labelBuilder,  ListDataTileStyle? style)  string,required TResult Function( Widget Function(BuildContext context, T data, ListTileMetadata metadata) builder)  custom,}) {final _that = this;
switch (_that) {
case ListDataBuilderString():
return string(_that.labelBuilder,_that.style);case ListDataBuilderCustom():
return custom(_that.builder);}
}