Listening to table inserts in supabase within radius of user location in Flutter

19 Views Asked by At

I have a table in Supabase which has reported_location column. I want to listen to inserts in Flutter within a given radius.

I am using the code below but it isn't working.

late RealtimeChannel _violationsListener;

void subscribeToViolations(LatLng userLocation) {
  const radius = 10000; // 10 km in meters
  final userLocationPoint =
      'ST_SetSRID(ST_MakePoint(${userLocation.longitude}, ${userLocation.latitude}), 4326)';

  _violationsListener = supabase
      .channel('violations-channel')
      .onPostgresChanges(
        event: PostgresChangeEvent.insert,
        schema: 'public',
        table: 'violations',
        filter: PostgresChangeFilter(
          type: PostgresChangeFilterType.lt,
          column: 'ST_Distance(reporting_location, $userLocationPoint)',
          value: radius.toString(),
        ),
        callback: (payload) async {
          final json = payload.newRecord;
          debugPrint(
              'Printing subscribed message================================');
          debugPrint(json.toString());
        },
      )
      .subscribe();
}
0

There are 0 best solutions below