GeoClue: The Geolocation Service
Geoclue is a D-Bus service that provides location information. It utilizes many sources to best find user's location:
- WiFi-based geolocation via Mozilla Location Service (accuracy: in meters)
- GPS(A) receivers (accuracy: in centimeters)
- GPS of other devices on the local network, e.g smartphones (accuracy: in centimeters)
- 3G modems (accuracy: in kilometers, unless modem has GPS)
- GeoIP (accuracy: city-level)
import 'dart:async';
import 'package:geoclue/geoclue.dart';
Future<void> main() async {
final location = await GeoClue.getLocation(desktopId: '<desktop-id>');
print('Current location: $location');
print('Waiting 10s for location updates...');
late final StreamSubscription sub;
sub = GeoClue.getLocationUpdates(desktopId: '<desktop-id>')
.timeout(const Duration(seconds: 10), onTimeout: (_) => sub.cancel())
.listen((location) {
print('... $location');
});
}
We welcome contributions! See the contribution guide for more details.