whenOrNull<TResult extends Object?> method

  1. @optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
  1. TResult? string(
    1. String labelBuilder(
      1. T data
      ),
    2. Color? backgroundColor,
    3. TextStyle? labelStyle,
    4. OutlinedBorder? shape,
    5. Color? deleteIconColor,
    6. Widget? deleteIcon,
    7. Widget? avatar,
    8. BoxConstraints? avatarBoxConstraints,
    9. EdgeInsetsGeometry? labelPadding,
    10. BorderSide side,
    )?,
  2. TResult? custom(
    1. Widget builder(
      1. BuildContext context,
      2. T data,
      3. void delete()
      )
    )?,
})

A variant of when that fallback to returning null

It is equivalent to doing:

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

Implementation

@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>({TResult? Function( String Function(T data) labelBuilder,  Color? backgroundColor,  TextStyle? labelStyle,  OutlinedBorder? shape,  Color? deleteIconColor,  Widget? deleteIcon,  Widget? avatar,  BoxConstraints? avatarBoxConstraints,  EdgeInsetsGeometry? labelPadding,  BorderSide side)?  string,TResult? Function( Widget Function(BuildContext context, T data, void Function() delete) builder)?  custom,}) {final _that = this;
switch (_that) {
case DataDisplayBuilderString() when string != null:
return string(_that.labelBuilder,_that.backgroundColor,_that.labelStyle,_that.shape,_that.deleteIconColor,_that.deleteIcon,_that.avatar,_that.avatarBoxConstraints,_that.labelPadding,_that.side);case DataDisplayBuilderWidget() when custom != null:
return custom(_that.builder);case _:
  return null;

}
}