createMessage function Null safety

NERoomChatMessage? createMessage(
  1. RoomMessage? message
)

Implementation

NERoomChatMessage? createMessage(RoomMessage? message) {
  if (message != null) {
    switch (message.type) {
      case 'text':
        {
          return _NERoomTextMessageImpl(
            messageUuid: message.uuid,
            fromUserUuid: message.fromAccount,
            fromNick: message.fromNick,
            text: message.content ?? '',
            time: message.time,
            toUserUuidList: message.toAccounts?.whereType<String>().toList(),
          );
        }
      case 'file':
        {
          final attachment = message.attachment as RoomMessageAttachment;
          return _NERoomFileMessageImpl(
              messageUuid: message.uuid,
              fromUserUuid: message.fromAccount,
              fromNick: message.fromNick,
              time: message.time,
              toUserUuidList: message.toAccounts?.whereType<String>().toList(),
              displayName: attachment.displayName,
              extension: attachment.extension,
              md5: attachment.md5,
              url: attachment.url,
              size: attachment.size,
              thumbPath: attachment.thumbPath,
              path: attachment.path);
        }
      case 'image':
        {
          final attachment = message.attachment as RoomMessageAttachment;
          return _NERoomImageMessageImpl(
            messageUuid: message.uuid,
            fromUserUuid: message.fromAccount,
            fromNick: message.fromNick,
            time: message.time,
            toUserUuidList: message.toAccounts?.whereType<String>().toList(),
            displayName: attachment.displayName,
            extension: attachment.extension,
            md5: attachment.md5,
            url: attachment.url,
            size: attachment.size,
            thumbPath: attachment.thumbPath,
            path: attachment.path,
            width: attachment.width ?? 0,
            height: attachment.height ?? 0,
          );
        }
      case 'custom':
        {
          return _NERoomCustomMessageImpl(
            messageUuid: message.uuid,
            fromUserUuid: message.fromAccount,
            fromNick: message.fromNick,
            attachStr: message.content ?? '',
            time: message.time,
            toUserUuidList: message.toAccounts?.whereType<String>().toList(),
          );
        }
    }
  }
  return null;
}