when<TResult extends Object?> method
- TResult $default(
- String id,
- String title,
- String? details,
- String? path,
- DateTime date,
- int? rating100,
- int oCounter,
- bool organized,
- bool interactive,
- double? resumeTime,
- int playCount,
- List<
SceneFile> files, - ScenePaths paths,
- String? studioId,
- String? studioName,
- String? studioImagePath,
- List<
String> performerIds, - List<
String> performerNames, - List<
String?> performerImagePaths, - List<
String> tagIds, - List<
String> tagNames,
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?>(TResult Function( String id, String title, String? details, String? path, DateTime date, int? rating100, @JsonKey(name: 'o_counter') int oCounter, bool organized, bool interactive, @JsonKey(name: 'resume_time') double? resumeTime, @JsonKey(name: 'play_count') int playCount, List<SceneFile> files, ScenePaths paths, @JsonKey(name: 'studio_id') String? studioId, @JsonKey(name: 'studio_name') String? studioName, @JsonKey(name: 'studio_image_path') String? studioImagePath, @JsonKey(name: 'performer_ids') List<String> performerIds, @JsonKey(name: 'performer_names') List<String> performerNames, @JsonKey(name: 'performer_image_paths') List<String?> performerImagePaths, @JsonKey(name: 'tag_ids') List<String> tagIds, @JsonKey(name: 'tag_names') List<String> tagNames) $default,) {final _that = this;
switch (_that) {
case _Scene():
return $default(_that.id,_that.title,_that.details,_that.path,_that.date,_that.rating100,_that.oCounter,_that.organized,_that.interactive,_that.resumeTime,_that.playCount,_that.files,_that.paths,_that.studioId,_that.studioName,_that.studioImagePath,_that.performerIds,_that.performerNames,_that.performerImagePaths,_that.tagIds,_that.tagNames);case _:
throw StateError('Unexpected subclass');
}
}