Files
stream-chat-flutter/packages/stream_chat/README.md
T
2022-12-06 15:41:05 +01:00

129 lines
4.1 KiB
Markdown

# Official Dart Client for [Stream Chat](https://getstream.io/chat/)
>The official Dart client for Stream Chat, a service for building chat applications. This library can be used on any Dart project and on both mobile and web apps with Flutter.
[![Pub](https://img.shields.io/pub/v/stream_chat.svg)](https://pub.dartlang.org/packages/stream_chat)
![](https://img.shields.io/badge/platform-flutter%20%7C%20flutter%20web-ff69b4.svg?style=flat-square)
![CI](https://github.com/GetStream/stream-chat-flutter/workflows/stream_flutter_workflow/badge.svg?branch=master)
**Quick Links**
- [Register](https://getstream.io/chat/trial/) to get an API key for Stream Chat
- [Flutter Chat Tutorial](https://getstream.io/chat/flutter/tutorial/)
- [Chat UI Kit](https://getstream.io/chat/ui-kit/)
- [Chat Client Docs](https://getstream.io/chat/docs/flutter-dart/?language=dart)
**V4 Migration Guide**
For upgrading from V3 to V4, please refer to the [V4 Migration Guide](https://getstream.io/chat/docs/sdk/flutter/guides/migration_guide_4_0/)
### Changelog
Check out the [changelog on pub.dev](https://pub.dev/packages/stream_chat/changelog) to see the latest changes in the package.
## Getting started
### Add dependency
Add this to your package's pubspec.yaml file, use the latest version [![Pub](https://img.shields.io/pub/v/stream_chat.svg)](https://pub.dartlang.org/packages/stream_chat)
```yaml
dependencies:
stream_chat: ^latest-version
```
You should then run `flutter packages get`
## Example Project
There is a detailed Flutter example project in the `example` folder. You can directly run and play on it.
## Setup API Client
First you need to instantiate a chat client. The Chat client will manage API call, event handling and manage the web socket connection to Stream Chat servers. You should only create the client once and re-use it across your application.
```dart
final client = StreamChatClient("stream-chat-api-key");
```
### Logging
By default the Chat Client will write all messages with level Warn or Error to `stdout`.
#### Change Logging Level
During development you might want to enable more logging information, you can change the default log level when constructing the client.
```dart
final client = StreamChatClient("stream-chat-api-key", logLevel: Level.INFO);
```
#### Custom Logger
You can handle the log messages directly instead of have them written to `stdout`, this is very convenient if you use an error tracking tool or if you want to centralize your logs into one facility.
```dart
myLogHandlerFunction = (LogRecord record) {
// do something with the record (ie. send it to Sentry or Fabric)
}
final client = StreamChatClient("stream-chat-api-key", logHandlerFunction: myLogHandlerFunction);
```
### Offline storage
To add data persistence, you can extend the class `ChatPersistenceClient` and pass an instance to the `StreamChatClient`.
```dart
class CustomChatPersistentClient extends ChatPersistenceClient {
...
}
final client = StreamChatClient(
apiKey ?? kDefaultStreamApiKey,
logLevel: Level.INFO,
)..chatPersistenceClient = CustomChatPersistentClient();
```
We provide an official persistent client in the [`stream_chat_persistence`](https://pub.dev/packages/stream_chat_persistence) package.
```dart
import 'package:stream_chat_persistence/stream_chat_persistence.dart';
final chatPersistentClient = StreamChatPersistenceClient(
logLevel: Level.INFO,
connectionMode: ConnectionMode.background,
);
final client = StreamChatClient(
apiKey ?? kDefaultStreamApiKey,
logLevel: Level.INFO,
)..chatPersistenceClient = chatPersistentClient;
```
## Contributing
### Code conventions
- Make sure that you run `dartfmt` before you commit your code
- Make sure all public methods and functions are well documented
### Running tests
- run `flutter test`
### Releasing a new version
- update the package version on `pubspec.yaml` and `version.dart`
- add a changelog entry on `CHANGELOG.md`
- run `flutter pub publish` to publish the package
### Watch models and generate JSON code
JSON serialization relies on code generation; make sure to keep that running while you make changes to the library
```bash
flutter pub run build_runner watch
```