onPostgresChanges method

RealtimeChannel onPostgresChanges({
  1. required PostgresChangeEvent event,
  2. String? schema,
  3. String? table,
  4. PostgresChangeFilter? filter,
  5. required void callback(
    1. PostgresChangePayload payload
    ),
})

Sets up a listener on your Supabase database.

event determines whether you listen to insert, update, delete, or all of the events.

schema is the schema of the database on which to set up the listener. The listener will return all changes from every listenable schema if omitted.

table is the table of the database on which to setup the listener. The listener will return all changes from every listenable table if omitted.

filter can be used to further control which rows to listen to within the given schema and table.

supabase.channel('my_channel').onPostgresChanges(
    event: PostgresChangeEvent.all,
    schema: 'public',
    table: 'messages',
    filter: PostgresChangeFilter(
      type: PostgresChangeFilterType.eq,
      column: 'room_id',
      value: 200,
    ),
    callback: (payload) {
      print(payload);
    }).subscribe();

Implementation

RealtimeChannel onPostgresChanges({
  required PostgresChangeEvent event,
  String? schema,
  String? table,
  PostgresChangeFilter? filter,
  required void Function(PostgresChangePayload payload) callback,
}) {
  return onEvents(
    'postgres_changes',
    ChannelFilter(
      event: event.toRealtimeEvent(),
      schema: schema,
      table: table,
      filter: filter?.toString(),
    ),
    (payload, [ref]) => callback(PostgresChangePayload.fromPayload(payload)),
  );
}