A Flutter plugin to get location updates in the background for both Android and iOS (Requires iOS 10.0+). Uses CoreLocation
for iOS and FusedLocationProvider
for Android
PS: This project was originaly created by @shah-xad for Android only.
1: Add this to your package's pubspec.yaml file:
dependencies:
background_location: ^0.0.10
2: Install packages from the command line:
$ flutter packages get
Alternatively, your editor might support flutter packages get. Check the docs for your editor to learn more.
Import the package where you wanna use it.
import 'package:background_location/background_location.dart';
Request permissions from the user.
BackgroundLocation.getPermissions(
onGranted: () {
// Start location service here or do something else
},
onDenied: () {
// Show a message asking the user to reconsider or do something else
},
)
You can check if you have permissions at anytime with checkPermissions()
BackgroundLocation.checkPermissions().then((status) {
// Check status here
})
Start the location service. This will also ask the user for permission if not asked previously by another package.
BackgroundLocation.startLocationService();
getLocationUpdates
will trigger everytime the location updates on the device. Provide a callback function to getLocationUpdates
to handle location update.
BackgroundLocation.getLocationUpdates((location) {
print(location);
});
location is a Class
exposing the following properties.
double latitude;
double longitude;
double altitude;
double bearing;
double accuracy;
double speed;
double time;
To stop listening to location changes you can execute.
BackgroundLocation.stopLocationService();
Complete working application Example
- Add support for manually asking for permission.
- Add support for checking the permission status.
- Add support for getting the last location once without listening to location updates.
- Add support for chosing the rate at the which the location is fetched based on time and distance.
- Ali Almoullim (@almoullim) -- iOS implementation
- Shahzad Akram (@shah-xad) -- Android implementation