when<TResult extends Object?> method
- @optionalTypeArgs
- TResult $default(
- String packageName,
- String? packageVersion,
- String packagePath,
- List<
InterfaceDeclaration> interfaceDeclarations, - List<
ExecutableDeclaration> executableDeclarations, - List<
FieldDeclaration> fieldDeclarations, - List<
TypeAliasDeclaration> typeAliasDeclarations, - Set<
PackageApiSemantics> semantics, - AndroidPlatformConstraints? androidPlatformConstraints,
- IOSPlatformConstraints? iosPlatformConstraints,
- SdkType sdkType,
- List<
PackageDependency> packageDependencies, - Version minSdkVersion,
- TypeHierarchy typeHierarchy,
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 packageName,
String? packageVersion,
String packagePath,
List<InterfaceDeclaration> interfaceDeclarations,
List<ExecutableDeclaration> executableDeclarations,
List<FieldDeclaration> fieldDeclarations,
List<TypeAliasDeclaration> typeAliasDeclarations,
Set<PackageApiSemantics> semantics,
AndroidPlatformConstraints? androidPlatformConstraints,
IOSPlatformConstraints? iosPlatformConstraints,
SdkType sdkType,
List<PackageDependency> packageDependencies,
Version minSdkVersion,
TypeHierarchy typeHierarchy)
$default,
) {
final _that = this;
switch (_that) {
case _PackageApi():
return $default(
_that.packageName,
_that.packageVersion,
_that.packagePath,
_that.interfaceDeclarations,
_that.executableDeclarations,
_that.fieldDeclarations,
_that.typeAliasDeclarations,
_that.semantics,
_that.androidPlatformConstraints,
_that.iosPlatformConstraints,
_that.sdkType,
_that.packageDependencies,
_that.minSdkVersion,
_that.typeHierarchy);
}
}