when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult item(
    1. BarcodeData barcodeData,
    2. DateTime createdAt,
    3. double weight,
    4. String itemVersion,
    5. UnitTileData unitTileData,
    6. List<UnitServer> servers,
    7. String? parentSSCCCodeId,
    8. SpecialProcess? specialProcess,
    ),
  2. required TResult ssCC(
    1. BarcodeData barcodeData,
    2. DateTime createdAt,
    3. String unitVersion,
    4. HuDetails? huDetails,
    5. PackingInstruction? packingInstruction,
    6. UnitTileData unitTileData,
    7. UnitStatusData statusData,
    8. List<UnitServer> servers,
    9. List<UnitItem> unitItems,
    10. List<UnitSSCC> subHUs,
    11. bool isSubHu,
    12. List<MaterialDescription> materialDescriptions,
    ),
  3. required TResult ph(
    1. BarcodeData barcodeData,
    2. DateTime createdAt,
    3. UnitTileData unitTileData,
    4. List<UnitServer> servers,
    5. List<String> assignedSSCCs,
    6. HuDetails? huDetails,
    ),
})

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( BarcodeData barcodeData,  DateTime createdAt,  double weight,  String itemVersion,  UnitTileData unitTileData,  List<UnitServer> servers,  String? parentSSCCCodeId,  SpecialProcess? specialProcess)  item,required TResult Function( BarcodeData barcodeData,  DateTime createdAt,  String unitVersion,  HuDetails? huDetails,  PackingInstruction? packingInstruction,  UnitTileData unitTileData,  UnitStatusData statusData,  List<UnitServer> servers,  List<UnitItem> unitItems,  List<UnitSSCC> subHUs,  bool isSubHu,  List<MaterialDescription> materialDescriptions)  ssCC,required TResult Function( BarcodeData barcodeData,  DateTime createdAt,  UnitTileData unitTileData,  List<UnitServer> servers,  List<String> assignedSSCCs,  HuDetails? huDetails)  ph,}) {final _that = this;
switch (_that) {
case UnitItem():
return item(_that.barcodeData,_that.createdAt,_that.weight,_that.itemVersion,_that.unitTileData,_that.servers,_that.parentSSCCCodeId,_that.specialProcess);case UnitSSCC():
return ssCC(_that.barcodeData,_that.createdAt,_that.unitVersion,_that.huDetails,_that.packingInstruction,_that.unitTileData,_that.statusData,_that.servers,_that.unitItems,_that.subHUs,_that.isSubHu,_that.materialDescriptions);case UnitPH():
return ph(_that.barcodeData,_that.createdAt,_that.unitTileData,_that.servers,_that.assignedSSCCs,_that.huDetails);}
}