// the find
Baseflow/flutter-geolocator
Android and iOS Geolocation plugin for Flutter
The de-facto standard geolocation plugin for Flutter, covering Android, iOS, macOS, web, and Windows through Flutter's federated plugin architecture. If you're building a Flutter app that needs GPS coordinates, distance calculations, or location stream updates, this is what you reach for first.
The federated architecture is done properly — platform packages are endorsed, so you just add `geolocator` and the right implementation pulls in automatically without manual wiring. Android background location uses a foreground service with a configurable notification, which is the correct approach for Android 8+ battery and permission requirements rather than silently dying in the background. The position stream API returns a Dart `Stream<Position>`, which plays well with Flutter's reactive model and works cleanly with StreamBuilder. Active maintenance with per-platform CI workflows means platform-specific breakage gets caught before it lands.
The Android side is written in Java rather than Kotlin, which is increasingly an awkward choice for new contributors and means you can't use suspend functions or coroutines natively in the plugin layer. The web implementation is necessarily limited — it wraps the browser Geolocation API, which means you get whatever accuracy the browser decides to give you and no background updates at all, but this limitation isn't prominently documented. There are no geofencing or region monitoring APIs; if you need 'notify me when the user enters this area', you're on your own or using a separate package. The single-test coverage in the Android source (one test file for MethodCallHandlerImpl) is thin for the amount of state machine complexity in the location service lifecycle.