when<TResult extends Object?>  method 
      
  
TResult
when<TResult extends Object?>({  
    
- required TResult network(- String url,
- ImageParams params
 
- required TResult base64(- String base64Code,
- ImageParams params
 
- required TResult filePath(- String filePath,
- ImageParams params
 
- required TResult asset(- String assetPath,
- ImageParams params
 
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 url, ImageParams params) network,
  required TResult Function(String base64Code, ImageParams params) base64,
  required TResult Function(String filePath, ImageParams params) filePath,
  required TResult Function(String assetPath, ImageParams params) asset,
}) {
  final _that = this;
  switch (_that) {
    case MyNetworkImage():
      return network(_that.url, _that.params);
    case MyBase64Image():
      return base64(_that.base64Code, _that.params);
    case MyFilePathImage():
      return filePath(_that.filePath, _that.params);
    case MyAssetImage():
      return asset(_that.assetPath, _that.params);
  }
}