Chat Flutter v3
Chat Flutter

Send your first message

With Sendbird Chat SDK for Flutter, you can efficiently integrate real-time chat into a client app. On the client-side implementation, you can initialize and configure the chat with minimal effort. On the server-side, Sendbird ensures reliable infra-management services for your chat within the app.

This page demonstrates how to install the Chat SDK in your mobile and web apps so that you can send your first message in just a few simple steps. In addition, try building your app on top of our sample app to jumpstart your build.

Note: To learn about how to integrate Sendbird Chat SDK for Flutter with a third-party UI plugin, see our Flutter chat tutorial.


The minimum requirements for Chat SDK for Flutter are:

  • Xcode 9 or later
  • Android studio 4.4 or later
  • Dart 2.12.0 or later
  • Flutter 2.0.0 or later

Note: The Sendbird server supports Transport Layer Security (TLS) from versions 1.0 up to 1.3. For example, in the server regions where TLS 1.3 isn't available, lower versions from 1.0 to 1.2 will be sequentially supported for secure data transmission.

Before you start

Before installing Sendbird Chat SDK, you need to create a Sendbird application on the Sendbird Dashboard, which comprises everything required in a chat service including users, messages, and channels. You will need the App ID of your Sendbird application when initializing the Chat SDK.

Note: Each Sendbird application can be integrated with a single client app. Within the same application, users can communicate with each other across all platforms, whether they are on mobile devices or on the web.

Access control list

Sendbird provides various access control options when using the Chat SDK. By default, the following attributes are turned on to avoid unexpected errors when creating sample apps and sending your first message:

  • Allow retrieving user list
  • Allow updating user metadata
  • Allow creating open channels
  • Allow creating group channels

However, this may grant access to unwanted data or operations, leading to potential security concerns. To manage your access control settings, you can turn on or off each option in Settings > Application > Security > Access control list on Sendbird Dashboard.

Get started

To send a message in a client app, you should install, build, and configure an in-app chat using Sendbird Chat SDK. Sendbird Chat SDK can be installed through

Step 1 Create a dependency

Create a dependency and add the following code to your package's pubspec.yaml file.

    sendbird_sdk: ^3.1.15

Step 2 Install packages

Install packages from the command line.

$ flutter pub get

Step 3 Import packages

You can use all classes and methods just with the following one import statement.

import 'package:sendbird_sdk/sendbird_sdk.dart'

Step 4 Initialize the Chat SDK

Now, initialize Sendbird Chat SDK in the app to allow the Chat SDK to respond to changes in the connection status in Flutter client apps. Initialization requires the App ID, which can be found in the Sendbird Dashboard.

// Initialize SendbirdSdk instance to use APIs in your app.

final sendbird = SendbirdSdk(appId: APP_ID);

Note: The constructor of a SendbirdSdk instance must be called across a client app at least once. We recommend that you initialize the Chat SDK in the main.dart and use its variable across your application.

Step 5 Connect to Sendbird server

You will need a user in order to send a message to a channel. You can either create a user on our dashboard or use a unique ID that hasn't been taken by any of your Sendbird application users. In the latter case, a new user will be automatically created in your Sendbird application before being connected.

Note: To learn more about authenticating with an access token, go to Authentication.

// The USER_ID, a string value,  below should be unique to your Sendbird application.

try {
    final user = await sendbird.connect("USER_ID");
    // The user is connected to the Sendbird server.
} catch (e) {
    // Handle error.

Step 6 Create a new open channel

Create an open channel using the following codes. Open channels are where all users in your Sendbird application can easily participate without an invitation. When creating an open channel, the OpenChannelParams class needs to be passed as a parameter.

try {
    final openChannel = await OpenChannel.createChannel(OpenChannelParams());
    // An open channel is successfully created.
    // you can get the open channel's data from the result object.
} catch (e) {
    // handle error.

Note: You can also create a group channel to send a message. To learn more, see Create a channel in the Group channel page.

Step 7 Enter the channel

Enter the open channel to send and receive messages.

// The following sample code continues from Step 6.
try {
    final openChannel = await OpenChannel.createChannel(OpenChannelParams());
    // Call the instance method of the result object in the openChannel parameter of the callback method.
    await openChannel.enter();
    // The current user successfully enters the open channel as a participant,
    // and can chat with other users in the channel by using APIs.
} catch (e) {
    // Handle error.

Step 8 Send a message to the channel

Finally, send a message to the channel. To learn about the message types you can send, refer to Message Overview in our Platform API Docs.

You can check the message you've sent in Sendbird Dashboard. To learn about receiving a message, refer to the receive messages through a channel event handler page.

try {
    final params = UserMessageParams(message: MESSAGE) = DATA
        ..customType = CUSTOM_TYPE;

    final preMessage = openChannel.sendUserMessage(params, onCompleted: (msg, error) {
        // The message is successfully sent to the channel.
        // The current user can receive messages from other users through the onMessageReceived() method of an event handler.
} catch (e) {
    // Handle error.