Skip to content
Stream Chat official Flutter SDK. Build your own chat experience using Dart and Flutter.
Dart Ruby Other
Branch: master
Clone or download

Latest commit

Latest commit f76ed94 Apr 10, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
example
lib
screenshots
.gitignore
CHANGELOG.md
LICENSE
README.md
analysis_options.yaml
pubspec.yaml

README.md

Flutter Chat Components

Flutter Chat

The official Flutter components for Stream Chat, a service for building chat applications.

Pub CI codecov Gitter

Quick Links

Flutter Chat Tutorial

The best place to start is the Flutter Chat Tutorial. It teaches you how to use this SDK and also shows how to make common changes.

Example App

This repo includes a fully functional example app with setup instructions. The example is available under the example folder.

Add dependency

dependencies:
 stream_chat_flutter: ^0.1.21

You should then run flutter packages get

Alpha version

Use version ^0.2.0-alpha+1 to use the latest available version.

Note that this is still an alpha version. There may be some bugs and the api can change in breaking ways.

Thanks to whoever tries these versions and reports bugs or suggestions.

Android

All set

iOS

The library uses flutter file picker plugin to pick files from the os. Follow this wiki to fulfill iOS requirements.

We also use video_player to reproduce videos. Follow this guide to fulfill the requirements.

To pick images from the camera we use the image_picker plugin. Follow these instructions to check the requirements.

Docs

Business logic components

We provide 2 Widgets dedicated to business logic and state management:

UI Components

These are the available Widgets that you can use to build your application UI. Every widget uses the StreamChat or StreamChannel widgets to manage the state and communicate with Stream services.

Customizing styles

The Flutter SDK comes with a fully designed set of widgets which you can customize to fit with your application style and typography. Changing the theme of Chat widgets works in a very similar way that MaterialApp and Theme do.

Out of the box all chat widgets use their own default styling, there are two ways to change the styling:

  1. Initialize the StreamChatTheme from your existing MaterialApp style
class MyApp extends StatelessWidget {
  final Client client;

  MyApp(this.client);

  @override
  Widget build(BuildContext context) {
    final theme = ThemeData(
      primarySwatch: Colors.green,
    );

    return MaterialApp(
      theme: theme,
      home: Container(
        child: StreamChat(
         streamChatThemeData: StreamChatThemeData.fromTheme(theme),
          client: client,
          child: ChannelListPage(),
        ),
      ),
    );
  }
}
  1. Construct a custom theme and provide all the customizations needed
class MyApp extends StatelessWidget {
  final Client client;

  MyApp(this.client);

  @override
  Widget build(BuildContext context) {
    final theme = ThemeData(
      primarySwatch: Colors.green,
    );

    return MaterialApp(
      theme: theme,
      home: Container(
        child: StreamChat(
          streamChatThemeData: StreamChatThemeData.fromTheme(theme).copyWith(
            ownMessageTheme: MessageTheme(
              messageBackgroundColor: Colors.black,
              messageText: TextStyle(
                color: Colors.white,
              ),
              avatarTheme: AvatarTheme(
                borderRadius: BorderRadius.circular(8),
              ),
            ),
          ),
          client: client,
          child: ChannelListPage(),
        ),
      ),
    );
  }
}

Contributing

We welcome code changes that improve this library or fix a problem, please make sure to follow all best practices and add tests if applicable before submitting a Pull Request on Github. We are very happy to merge your code in the official repository. Make sure to sign our Contributor License Agreement (CLA) first. See our license file for more details.

You can’t perform that action at this time.