我在 Supabase 中有一个表,其中包含 reports_location 列。我想听 Flutter 中给定半径内的插入。
我正在使用下面的代码,但它不起作用。
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();
}
目前使用 Supabase Realtime 无法实现这一点。您可以使用 API 方法对数据库进行轮询以执行类似的操作。