'Is GPS activated - Flutter

Is there a way to find out in Flutter if the GPS is activated or deactivated? I use the plugin location however there I get only the location and not the state of the GPS.



Solution 1:[1]

Update: (Geolocator 8.0.1)

bool isLocationEnabled = await Geolocator.isLocationServiceEnabled();

Previous solution:

Accepted answer uses outdated plugin, you can use Geolocator plugin,

var geoLocator = Geolocator();
var status = await geoLocator.checkGeolocationPermissionStatus();

if (status == GeolocationStatus.denied) 
  // Take user to permission settings
else if (status == GeolocationStatus.disabled) 
  // Take user to location page
else if (status == GeolocationStatus.restricted) 
  // Restricted
else if (status == GeolocationStatus.unknown) 
  // Unknown
else if (status == GeolocationStatus.granted) 
  // Permission granted and location enabled

Solution 2:[2]

Using the latest version of Geolocator 5.0

var isGpsEnabled = await Geolocator().isLocationServiceEnabled();

I use this method to check and enable the Gps if disabled.

  Future _checkGps() async {
    if (!(await Geolocator().isLocationServiceEnabled())) {
      if (Theme.of(context).platform == TargetPlatform.android) {
        showDialog(
          context: context,
          builder: (BuildContext context) {
            return AlertDialog(
              title: Text("Can't get gurrent location"),
              content:
                  const Text('Please make sure you enable GPS and try again'),
              actions: <Widget>[
                FlatButton(
                  child: Text('Ok'),
                  onPressed: () {
                    final AndroidIntent intent = AndroidIntent(
                        action: 'android.settings.LOCATION_SOURCE_SETTINGS');

                    intent.launch();
                    Navigator.of(context, rootNavigator: true).pop();
                  },
                ),
              ],
            );
          },
        );
      }
    }
  }

Solution 3:[3]

checkLocationPermission() async {
final status = await Permission.location.request();
if (status == PermissionStatus.granted) {
  debugPrint('Permission granted');
  bool isLocationEnabled = await Geolocator.isLocationServiceEnabled();
  if (isLocationEnabled) {
  // location service is enabled,
  } else {
  // open Location settings
    await Geolocator.openLocationSettings();
  }
} else if (status == PermissionStatus.denied) {
  debugPrint(
      'Permission denied. Show a dialog and again ask for the permission');
} else if (status == PermissionStatus.permanentlyDenied) {
  debugPrint('Take the user to the settings page.');
  await openAppSettings();
}
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 CopsOnRoad
Solution 3 Example person