Flutter Offline

LAST EDIT Jun 21 2024

To add data persistence you can extend the class ChatPersistenceClient and pass an instance to the StreamChatClient.

We provide an official persistent client in the stream_chat_persistence package that works using the library moor (https://moor.simonbinder.eu), an SQLite ORM.

Add this to your package's pubspec.yaml file, using the latest version

You should then run flutter packages get

The usage is pretty simple.

1. Create a new instance of StreamChatPersistenceClient providing logLevel and connectionMode

2. Pass the instance to the official StreamChatClient

And you are ready to go...

Note that passing ConnectionMode.background the database uses a background isolate to unblock the main thread. The StreamChatClient uses the chatPersistentClient to synchronize the database with the newest information every time it receives new data about channels/messages/users.



The DB file is named after the userId, so if you instantiate a client using a different userId you will use a different database. Calling client.disconnect(flushOfflineStorage: true) flushes all current database data.

Updating/deleting/sending a message while offline


The information about the action is saved in offline storage. When the client returns online, everything is retried.