Message class sealed
Base class for all message types.
Uses a sealed class hierarchy with Freezed for immutability and union types.
The type
field serves as the discriminator for JSON serialization/deserialization.
- Annotations
-
- @Freezed(unionKey: 'type', fallbackUnion: 'unsupported')
Constructors
-
Message.audio({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<
String, List< ? reactions, bool? pinned, Map<UserID> >String, dynamic> ? metadata, MessageStatus? status, required String source, @DurationConverter() required Duration duration, String? text, int? size, List<double> ? waveform}) -
Creates an audio message.
constfactory
-
Message.custom({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<
String, List< ? reactions, bool? pinned, Map<UserID> >String, dynamic> ? metadata, MessageStatus? status}) -
Creates a custom message with application-specific data.
constfactory
-
Message.file({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<
String, List< ? reactions, bool? pinned, Map<UserID> >String, dynamic> ? metadata, MessageStatus? status, required String source, required String name, int? size, String? mimeType}) -
Creates a file message.
constfactory
-
Message.fromJson(Map<
String, dynamic> json) -
Creates a Message instance from a JSON map.
factory
-
Message.image({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<
String, List< ? reactions, bool? pinned, Map<UserID> >String, dynamic> ? metadata, MessageStatus? status, required String source, String? text, String? thumbhash, String? blurhash, double? width, double? height, bool? hasOverlay}) -
Creates an image message.
constfactory
-
Message.system({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<
String, List< ? reactions, bool? pinned, Map<UserID> >String, dynamic> ? metadata, MessageStatus? status, required String text}) -
Creates a system message (e.g., "User joined the chat").
constfactory
-
Message.text({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, @EpochDateTimeConverter() DateTime? editedAt, Map<
String, List< ? reactions, bool? pinned, Map<UserID> >String, dynamic> ? metadata, MessageStatus? status, required String text, LinkPreviewData? linkPreviewData}) -
Creates a text message.
constfactory
-
Message.textStream({required String id, required String authorId, String? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<
String, List< ? reactions, bool? pinned, Map<String> >String, dynamic> ? metadata, MessageStatus? status, required String streamId}) -
Creates a streaming text message placeholder.
Used while the text content is being streamed.
constfactory
-
Message.unsupported({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<
String, List< ? reactions, bool? pinned, Map<UserID> >String, dynamic> ? metadata, MessageStatus? status}) -
Represents a message type that is not recognized or supported by the current version.
Used as a fallback during JSON deserialization.
constfactory
-
Message.video({required MessageID id, required UserID authorId, MessageID? replyToMessageId, @EpochDateTimeConverter() DateTime? createdAt, @EpochDateTimeConverter() DateTime? deletedAt, @EpochDateTimeConverter() DateTime? failedAt, @EpochDateTimeConverter() DateTime? sentAt, @EpochDateTimeConverter() DateTime? deliveredAt, @EpochDateTimeConverter() DateTime? seenAt, @EpochDateTimeConverter() DateTime? updatedAt, Map<
String, List< ? reactions, bool? pinned, Map<UserID> >String, dynamic> ? metadata, MessageStatus? status, required String source, String? text, String? name, int? size, double? width, double? height}) -
Creates a video message.
constfactory
Properties
-
ID of the user who sent the message.
no setterinherited
-
copyWith
→ $MessageCopyWith<
Message> -
Create a copy of Message
with the given fields replaced by the non-null parameter values.
no setterinherited
- createdAt → DateTime?
-
Timestamp when the message was created.
no setterinherited
- deletedAt → DateTime?
-
Timestamp when the message was marked as deleted.
no setterinherited
- deliveredAt → DateTime?
-
Timestamp when the message was delivered to the recipient.
no setterinherited
- failedAt → DateTime?
-
Timestamp when the message failed to send.
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- id → String
-
Unique identifier for the message.
no setterinherited
-
metadata
→ Map<
String, dynamic> ? -
Additional custom metadata associated with the message.
no setterinherited
- pinned → bool?
-
Indicates if the message is pinned.
no setterinherited
-
reactions
→ Map<
String, List< ?String> > -
Map of reaction keys to lists of user IDs who reacted.
no setterinherited
- replyToMessageId → String?
-
ID of the message this one is replying to.
no setterinherited
- resolvedStatus → MessageStatus?
-
Calculates the current status of the message based on its timestamps or
status
field. Returnsnull
if the message has no specific status yet (onlycreatedAt
).no setter - resolvedTime → DateTime?
-
Returns the primary time associated with the message, used for display.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- seenAt → DateTime?
-
Timestamp when the message was seen by the recipient.
no setterinherited
- sentAt → DateTime?
-
Timestamp when the message was successfully sent.
no setterinherited
- status → MessageStatus?
-
Status of the message. Takes precedence over the timestamp based status.
If not provided, the status is determined by createdAt, sentAt, seenAt etc.
no setterinherited
- updatedAt → DateTime?
-
Timestamp when the message was last updated.
no setterinherited
Methods
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toJson(
) → Map< String, dynamic> -
Serializes this Message to a JSON map.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited