background_location 0.4.0 copy "background_location: ^0.4.0" to clipboard
background_location: ^0.4.0 copied to clipboard

outdated

A Flutter plugin to get location updates in the background for both Android and iOS. Uses CoreLocation for iOS and FusedLocationProvider for Android.

Background Location #

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

Getting Started #

1: Add this to your package's pubspec.yaml file:

dependencies:
  background_location: ^0.4.0

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.

How to use #

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

Set the notification title, message and icon (Android only). Use await or .then if you wanna start the location service immediatly after becuase its an asynchronous method

BackgroundLocation.setAndroidNotification(
	title: "Notification title",
        message: "Notification message",
        icon: "@mipmap/ic_launcher",
);

Set the interval between localisations in milliseconds (Android only). Use await or .then if you wanna start the location service immediatly after becuase its an asynchronous method

BackgroundLocation.setAndroidConfiguration(1000);

Start the location service. This will also ask the user for permission if not asked previously by another package.

BackgroundLocation.startLocationService();

Start location service by specifying distanceFilter. Defaults to 0 if not specified

BackgroundLocation.startLocationService(distanceFilter : 10);

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;
bool isMock;

To stop listening to location changes you can execute.

BackgroundLocation.stopLocationService();

Make sure to delcare all required permissions for both your android and ios app

info.plist

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs access to location.</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location.</string>
<key>UIBackgroundModes</key>
<array>
	<string>fetch</string>
	<string>location</string>
</array>

AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/> 

Example #

Complete working application Example

Todo #

  • ✅ 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.
376
likes
0
pub points
96%
popularity

Publisher

verified publisherfaultyapp.com

A Flutter plugin to get location updates in the background for both Android and iOS. Uses CoreLocation for iOS and FusedLocationProvider for Android.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, permission_handler

More

Packages that depend on background_location