matrix 0.25.5 copy "matrix: ^0.25.5" to clipboard
matrix: ^0.25.5 copied to clipboard

Matrix Dart SDK

Matrix SDK #

Matrix (matrix.org) SDK written in dart.

Native libraries #

For E2EE, libolm must be provided.

Additionally, OpenSSL (libcrypto) must be provided on native platforms for E2EE.

For flutter apps you can easily import it with the flutter_olm and the flutter_openssl_crypto packages.

How to use this #

  1. Import the sdk
  matrix: <latest-version>
  # Optional:
  flutter_olm: <latest-version>
  flutter_openssl_crypto: <latest-version>
import 'package:matrix/matrix.dart';
  1. Create a new client:
final client = Client("HappyChat");

The SDK works better with a database. Otherwise it has no persistence. For this you need to provide a databaseBuilder like this:

final client = Client(
  "HappyChat",
  databaseBuilder: (_) async {
    final dir = await getApplicationSupportDirectory(); // Recommend path_provider package
    final db = HiveCollectionsDatabase('matrix_example_chat', dir.path);
    await db.open();
    return db;
  },
);
  1. Connect to a Matrix Homeserver and listen to the streams:
client.onLoginStateChanged.stream.listen((bool loginState){ 
  print("LoginState: ${loginState.toString()}");
});

client.onEvent.stream.listen((EventUpdate eventUpdate){ 
  print("New event update!");
});

client.onRoomUpdate.stream.listen((RoomUpdate eventUpdate){ 
  print("New room update!");
});

await client.checkHomeserver("https://yourhomeserver.abc");
await client.login(
  identifier: AuthenticationUserIdentifier(user: 'alice'),
  password: '123456',
);
  1. Send a message to a Room:
await client.getRoomById('your_room_id').sendTextEvent('Hello world');