fix: added new docs

This commit is contained in:
Deven Joshi
2021-07-06 12:41:02 +05:30
parent bbf4f26c1d
commit e2d4df8e2a
2 changed files with 76 additions and 12 deletions
@@ -6,7 +6,9 @@ title: Introduction
Understanding The UI Package Of The Flutter SDK
The official Flutter components for Stream Chat, a service for building chat applications.
### What function does `stream_chat_flutter` serve?
The UI SDK (`stream_chat_flutter`) contains official Flutter components for Stream Chat, a service for building chat applications.
While the Stream Chat service provides the backend for messaging and the LLC provides an easy way to
use it in your Flutter apps, we wanted to make sure that adding Chat functionality to your app was as quick as possible.
@@ -4,14 +4,22 @@ sidebar_position: 6
title: MessageInput
---
The `MessageInput` widget deals with common elements related to sending a message such as a text field for typing text,
adding media to a message, quoting a message and more. The message input uses a stream channel ancestor to send a message.
The message input can be used along with a message list view to display messages.
A Widget Dealing With Everything Related To Sending A Message
The message input also has commands such as Giphy and more which can be added. It can also be used to add custom attachments to your messages.
The message input is customisable and the orientation of the icons the text field and the send button can be changed.
### Background
Widget used to enter the message and add attachments
In Stream Chat, we can send messages in a channel. However, sending a message isn't as simple as adding
a `TextField` and logic for sending a message. It involves additional processes like addition of media,
quoting a messages, adding a custom command like a GIF board, and much more. Moreover, most apps also
need to customize the input to match their theme, overall color and structure pattern, etc.
To do this, we created a `MessageInput` widget which abstracts all expected functionality a modern input
needs - and allows you to use it out of the box.
### Basic Example
A `StreamChannel` is required above the widget tree in which the `MessageInput` is rendered since the channel is
where the messages sent actually go. Let's look at a common example of how we could use the `MessageInput`:
```dart
class ChannelPage extends StatelessWidget {
@@ -42,9 +50,63 @@ class ChannelPage extends StatelessWidget {
}
```
You usually put this widget in the same page of a [MessageListView]
as the bottom widget.
It is common to put this widget in the same page of a [MessageListView] as the bottom widget.
The widget renders the ui based on the first ancestor of
type [StreamChatTheme].
Modify it to change the widget appearance.
### Quoting A Message
The quoting functionality allows us to 'reply' to a specific message without creating a thread out of it.
It adds the other message as context when sending a message and also displays it above the sent message.
To quote a message, we provide a `quotedMessage` to the `MessageInput`.
```dart
Message? message;
// ...
MessageInput(
quotedMessage: message,
),
```
This will add the message given above the message about to be sent.
While you can implement your own functionality to select which message to reply to, the `MessageListView`
widget helps in this case since it has an inbuilt `onMessageSwiped` callback which we can use.
```dart
class ChannelPage extends StatefulWidget {
@override
_ChannelPageState createState() => _ChannelPageState();
}
class _ChannelPageState extends State<ChannelPage> {
Message? quotedMessage;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Expanded(
child: MessageListView(
// ...
onMessageSwiped: (message) {
setState(() {
quotedMessage = message;
});
},
),
),
MessageInput(
quotedMessage: _quotedMessage,
onQuotedMessageCleared: () {
setState(() => _quotedMessage = null);
},
),
],
),
);
}
}
```