Is GPS activated - Flutter

前端 未结 3 915
执念已碎
执念已碎 2020-12-28 10:38

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.

相关标签:
3条回答
  • 2020-12-28 11:02

    Update: (Geolocator 5.1.3)

    Now you can use

    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
    
    0 讨论(0)
  • 2020-12-28 11:08

    The previous answers are outdated.

    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();
                      },
                    ),
                  ],
                );
              },
            );
          }
        }
      }
    
    0 讨论(0)
  • 2020-12-28 11:11

    Update 2019/10/25

    The location package now has a function (serviceEnabled()) to detect whether the location service is enabled and returns a bool as described in its docs and shown in the example:

    bool serviceStatus = await _locationService.serviceEnabled();
    if (service) {
        // service enabled
    } else {
        // service not enabled, restricted or permission denied
    }
    

    Old answer (package outdated)

    With geolocations you can check wether the location service is operational. It generally includes more customizability then the location package.

    final GeolocationResult result = await Geolocation.isLocationOperational();
    if(result.isSuccessful) { 
        // location service is enabled, and location permission is granted 
    } else { 
        // location service is not enabled, restricted, or location permission is denied 
    }
    
    0 讨论(0)
提交回复
热议问题