when<TResult extends Object?> method

  1. @optionalTypeArgs
TResult when<TResult extends Object?>({
  1. required TResult getRooms(
    1. CommonApiParams? params
    ),
  2. required TResult getRoomsResult(
    1. CommonApiParams? params,
    2. Either<Failure, List<ChatRoom>> result
    ),
  3. required TResult getRoomCount(
    1. CommonApiParams? params
    ),
  4. required TResult getRoomCountResult(
    1. CommonApiParams? params,
    2. Either<Failure, int> result
    ),
  5. required TResult getRoomById(
    1. String chatRoomId
    ),
  6. required TResult getRoomByIdResult(
    1. String chatRoomId,
    2. Either<Failure, ChatRoom> result
    ),
  7. required TResult getRoomMessages(
    1. String chatRoomId,
    2. CommonApiParams? params
    ),
  8. required TResult getRoomMessagesResult(
    1. String chatRoomId,
    2. CommonApiParams? params,
    3. Either<Failure, List<ChatMessage>> result
    ),
  9. required TResult deleteRoom(
    1. String chatRoomId
    ),
  10. required TResult deleteRoomResult(
    1. String chatRoomId,
    2. Either<Failure, Unit> result
    ),
  11. required TResult archiveRoom(
    1. String chatRoomId
    ),
  12. required TResult archiveRoomResult(
    1. String chatRoomId,
    2. Either<Failure, ChatRoom> result
    ),
  13. required TResult unArchiveRoom(
    1. String chatRoomId
    ),
  14. required TResult unArchiveRoomResult(
    1. String chatRoomId,
    2. Either<Failure, ChatRoom> result
    ),
  15. required TResult markRoomAsRead(
    1. String chatRoomId
    ),
  16. required TResult markRoomAsReadResult(
    1. String chatRoomId,
    2. Either<Failure, ChatRoom> result
    ),
  17. required TResult sendMessage(
    1. SendMessageDto dto
    ),
  18. required TResult sendMessageResult(
    1. SendMessageDto dto,
    2. Either<Failure, ChatMessage> result
    ),
  19. required TResult deleteMessage(
    1. DeleteMessageParams params
    ),
  20. required TResult deleteMessageResult(
    1. DeleteMessageParams params,
    2. Either<Failure, Unit> result
    ),
  21. required TResult externalEventReceived(
    1. MessengerExternalEvent event
    ),
})

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( CommonApiParams? params)  getRooms,required TResult Function( CommonApiParams? params,  Either<Failure, List<ChatRoom>> result)  getRoomsResult,required TResult Function( CommonApiParams? params)  getRoomCount,required TResult Function( CommonApiParams? params,  Either<Failure, int> result)  getRoomCountResult,required TResult Function( String chatRoomId)  getRoomById,required TResult Function( String chatRoomId,  Either<Failure, ChatRoom> result)  getRoomByIdResult,required TResult Function( String chatRoomId,  CommonApiParams? params)  getRoomMessages,required TResult Function( String chatRoomId,  CommonApiParams? params,  Either<Failure, List<ChatMessage>> result)  getRoomMessagesResult,required TResult Function( String chatRoomId)  deleteRoom,required TResult Function( String chatRoomId,  Either<Failure, Unit> result)  deleteRoomResult,required TResult Function( String chatRoomId)  archiveRoom,required TResult Function( String chatRoomId,  Either<Failure, ChatRoom> result)  archiveRoomResult,required TResult Function( String chatRoomId)  unArchiveRoom,required TResult Function( String chatRoomId,  Either<Failure, ChatRoom> result)  unArchiveRoomResult,required TResult Function( String chatRoomId)  markRoomAsRead,required TResult Function( String chatRoomId,  Either<Failure, ChatRoom> result)  markRoomAsReadResult,required TResult Function( SendMessageDto dto)  sendMessage,required TResult Function( SendMessageDto dto,  Either<Failure, ChatMessage> result)  sendMessageResult,required TResult Function( DeleteMessageParams params)  deleteMessage,required TResult Function( DeleteMessageParams params,  Either<Failure, Unit> result)  deleteMessageResult,required TResult Function( MessengerExternalEvent event)  externalEventReceived,}) {final _that = this;
switch (_that) {
case MessengerEventGetRooms():
return getRooms(_that.params);case MessengerEventGetRoomsResult():
return getRoomsResult(_that.params,_that.result);case MessengerEventGetRoomCount():
return getRoomCount(_that.params);case MessengerEventGetRoomCountResult():
return getRoomCountResult(_that.params,_that.result);case MessengerEventGetRoomById():
return getRoomById(_that.chatRoomId);case MessengerEventGetRoomByIdResult():
return getRoomByIdResult(_that.chatRoomId,_that.result);case MessengerEventGetRoomMessages():
return getRoomMessages(_that.chatRoomId,_that.params);case MessengerEventGetRoomMessagesResult():
return getRoomMessagesResult(_that.chatRoomId,_that.params,_that.result);case MessengerEventDeleteRoom():
return deleteRoom(_that.chatRoomId);case MessengerEventDeleteRoomResult():
return deleteRoomResult(_that.chatRoomId,_that.result);case MessengerEventArchiveRoom():
return archiveRoom(_that.chatRoomId);case MessengerEventArchiveRoomResult():
return archiveRoomResult(_that.chatRoomId,_that.result);case MessengerEventUnArchiveRoom():
return unArchiveRoom(_that.chatRoomId);case MessengerEventUnArchiveRoomResult():
return unArchiveRoomResult(_that.chatRoomId,_that.result);case MessengerEventMarkRoomAsRead():
return markRoomAsRead(_that.chatRoomId);case MessengerEventMarkRoomAsReadResult():
return markRoomAsReadResult(_that.chatRoomId,_that.result);case MessengerEventSendMessage():
return sendMessage(_that.dto);case MessengerEventSendMessageResult():
return sendMessageResult(_that.dto,_that.result);case MessengerEventDeleteMessage():
return deleteMessage(_that.params);case MessengerEventDeleteMessageResult():
return deleteMessageResult(_that.params,_that.result);case MessengerEventExternalEventReceived():
return externalEventReceived(_that.event);}
}