This plugin for Flutter handles getting location on Android and iOS. It also provides callbacks when location is changed.
As of the 1.4 version, you have to call getLocation()
instead of just getLocation
and onLocationChanged()
instead of onLocationChanged
.
In order to use this plugin in Android, you have to add this permission in AndroidManifest.xml :
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Permission check for Android 6+ was added. Still no callback when permissions granted so aiming SDK 21 is safer.
And to use it in iOS, you have to add this permission in Info.plist :
NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
Then you just have to import the package with
import 'package:location/location.dart';
Look into the example for utilisation, but a basic implementation can be done like this for a one time location :
var currentLocation = <String, double>{};
var location = new Location();
// Platform messages may fail, so we use a try/catch PlatformException.
try {
currentLocation = await location.getLocation;
} on PlatformException {
currentLocation = null;
}
You can also get continuous callbacks when your position is changing:
var location = new Location();
location.onLocationChanged.listen((Map<String,double> currentLocation) {
print(currentLocation["latitude"]);
print(currentLocation["longitude"]);
print(currentLocation["accuracy"]);
print(currentLocation["altitude"]);
print(currentLocation["speed"]);
print(currentLocation["speed_accuracy"]); // Will always be 0 on iOS
});
In this table you can find the different functions exposed by this plugin:
Methods | Description |
---|---|
Future<Map<String, double>> | getLocation() Allow to get a one time position of the user. |
Future<bool> | hasPermission() Return a boolean to know the state of the location permission. |
Stream<Map<String, double>> | onLocationChanged() Get the stream of the user's location. |
Please feel free to give me any feedback helping support this plugin !