geoclue library

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');
  });
}

Classes

GeoClue
Simplified convenience API
GeoClueAccuracyLevel
Used to specify level of accuracy requested by, or allowed for a client.
GeoClueClient
Retrieves location information and receives location update events from the the GeoClue service.
GeoClueLocation
Defines a geolocation
GeoClueManager
The GeoClue service manager