create static method

Future<Chat> create({
  1. required String databasePath,
  2. required ChatAdapter adapter,
  3. required ChatIdentityProvider identityProvider,
  4. DatabaseEncryptionConfig? encryptionConfig,
  5. bool? autoConnect,
})

Creates, initializes, and optionally connects a Chat instance.

This is the simplest way to get started with the Chat SDK.

The SDK can initialize before login. User-scoped APIs become active when identityProvider returns or emits a user id.

// Early initialization (at app startup)
final chat = await Chat.create(
  databasePath: 'chat.db',
  adapter: MyBackendAdapter(),
  identityProvider: MyIdentityProvider(),
);

Implementation

static Future<Chat> create({
  required String databasePath,
  required ChatAdapter adapter,
  required ChatIdentityProvider identityProvider,
  DatabaseEncryptionConfig? encryptionConfig,
  bool? autoConnect,
}) async {
  final config = ChatConfig(
    databasePath: databasePath,
  );

  final registry = ChatRegistry.withAdapter(
    config: config,
    adapter: adapter,
    identityProvider: identityProvider,
    databaseEncryptionConfig: encryptionConfig,
  );

  final chat = Chat(registry);
  await chat.initialize();

  final shouldAutoConnect = autoConnect ?? false;
  if (shouldAutoConnect) {
    await chat.connect();
  }

  return chat;
}