README.md
July 23, 2026 Β· View on GitHub
π Flutter Location
The easiest way to get a device's location in real-time β on every platform Flutter runs.
One simple API for GPS coordinates, live location streams and background tracking on Android, iOS, macOS, Web, Windows and Linux.
π Documentation Β Β·Β π Live web demo Β Β·Β π¦ pub.dev Β Β·Β π¬ Feedback
β¨ Why Location?
- π Truly cross-platform β the same code runs on all six Flutter targets, no per-platform branching.
- β‘ One-line to a fix β
await location.getLocation()and you're done. - π΄ Real-time streams β subscribe to
onLocationChangedfor continuous updates. - π Background tracking β keep receiving locations while your app is backgrounded on Android & iOS.
- ποΈ Tunable β pick accuracy, update interval and distance filter to balance precision vs. battery.
- π Customizable notification β full control over the Android foreground-service notification.
- π Rich data β latitude, longitude, altitude, speed, heading, accuracy, mock detection and more.
- π‘οΈ Battle-tested β one of the most-used location plugins in the Flutter ecosystem, maintained since 2017.
π± Platform support
| Feature | Android | iOS | macOS | Web | Windows | Linux |
|---|---|---|---|---|---|---|
| One-time location | β | β | β | β | β | β |
| Location stream | β | β | β | β | β | β |
| Background updates | β | β | β | β | β | β |
| Permission handling | β | β | β | β | β | β |
Windows uses
Windows.Devices.Geolocation; Linux talks to GeoClue2 over D-Bus. Both require the system location service to be enabled.
π Quick start
Add the package:
dependencies:
location: ^10.0.0
Get a location:
import 'package:location/location.dart';
final location = Location();
// Make sure the service is on and permission is granted.
if (!await location.serviceEnabled() && !await location.requestService()) return;
if (await location.requestPermission() != PermissionStatus.granted) return;
// One-time fixβ¦
final current = await location.getLocation();
print('${current.latitude}, ${current.longitude}');
// β¦or a live stream.
location.onLocationChanged.listen((loc) {
print('Moved to ${loc.latitude}, ${loc.longitude}');
});
That's it. Platform setup (permissions, background mode, sandbox entitlements) and the full API are covered in the package README and the documentation website.
π¦ Packages in this repository
| Package | Description | pub.dev |
|---|---|---|
location | The plugin you use in your app. | |
location_platform_interface | Shared platform interface. | |
location_web | Web implementation. |
π€ Contributing
Issues and pull requests are very welcome β this plugin is community-maintained and we're always looking for help. Browse the open issues to get started, or open a new one to report a bug or request a feature.
π₯ Maintainers
- Guillaume Bernos (original creator)
- Bartek Pacia
π License
Released under the MIT License. Β© 2017 Guillaume Bernos.