whenOrNull<TResult extends Object?> method

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

A variant of when that fallback to returning null

It is equivalent to doing:

switch (sealedClass) {
  case Subclass(:final field):
    return ...;
  case _:
    return null;
}

Implementation

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

}
}