48 lines
1.4 KiB
Plaintext
48 lines
1.4 KiB
Plaintext
---
|
|
id: message_widget
|
|
sidebar_position: 11
|
|
title: MessageWidget
|
|
---
|
|
|
|
A Widget For Displaying Messages And Attachments
|
|
|
|
### Background
|
|
|
|
There are several things that need to be displayed with text in a message in a modern messaging app:
|
|
attachments, highlights if the message is pinned, user avatars of the sender, etc.
|
|
|
|
To encapsulate all of this functionality into one widget, the Flutter SDK contains a `MessageWidget`
|
|
widget which provides these out of the box.
|
|
|
|
### Basic Example (Modifying `MessageWidget` in `MessageListView`)
|
|
|
|
Primarily, the `MessageWidget` is used in the `MessageListView`. To customize only a few properties
|
|
of the `MessageWidget` without supplying all other properties, the `messageBuilder` builder supplies
|
|
a default implementation of the widget for us to modify.
|
|
|
|
```dart
|
|
class ChannelPage extends StatelessWidget {
|
|
const ChannelPage({
|
|
Key key,
|
|
}) : super(key: key);
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
body: MessageListView(
|
|
messageBuilder: (context, details, messageList, defaultMessageWidget) {
|
|
return defaultMessageWidget.copyWith(
|
|
showThreadReplyIndicator: false,
|
|
);
|
|
},
|
|
),
|
|
|
|
);
|
|
}
|
|
}
|
|
```
|
|
|
|
### Building A Custom Attachment
|
|
|
|
When a custom attachment type (location, audio, etc.) is sent, the MessageWidget also needs to know
|
|
how to build it. |