How to Use the Geolocation Plugin in Flutter

Jul 23, 2024 | Programming

When developing apps in Flutter that require location data, the geolocation plugin is an essential tool for both Android and iOS. This guide will walk you through the features, installation, and usage of this plugin.

Features of the Geolocation Plugin

  • Manual and automatic location permission management
  • Retrieve the current one-shot location
  • Access continuous location updates with foreground and background options

This plugin is currently under active development and will soon include features like geocoding, geofences, place suggestions, activity recognition, and more!

Installation

To get started, you’ll need to install the geolocation plugin in your Flutter project by following the instructions from the official documentation.

iOS Setup

If your Flutter project is created with the Objective-C template, ensure you add use_frameworks! at the top of your ios/Podfile.

Android Setup

Geolocation depends on AndroidX. Therefore, include these settings in your android/gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

If you’ve enabled code obfuscation with R8 or Proguard, remember to include the necessary rules in your android/app/build.gradle and android/app/proguard-rules.pro.

Permissions

Both Android and iOS require location permissions to be declared in their respective configuration files.

iOS Permissions

iOS provides two types of location permissions: “when in use” and “always”. You must declare the permission descriptions in ios/Runner/Info.plist.

Android Permissions

Android has both coarse and fine location permissions. Declare the desired permission in android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- or -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Using the Plugin

Now that you have installed and configured the plugin, it’s time to explore how to get started with location requests.

Check if Location Service is Operational

Before proceeding to request permissions or location, check if the location services are enabled:

final GeolocationResult result = await Geolocation.isLocationOperational();
if(result.isSuccessful) {
    // Location service is enabled
} else {
    // Handle errors accordingly
}

Requesting Location Permission

The plugin automatically requests permission if necessary when making a location request. Here’s how you can initiate a manual request:

final GeolocationResult result = await Geolocation.requestLocationPermission(
  const LocationPermission(
    android: LocationPermissionAndroid.fine,
    ios: LocationPermissionIOS.always,
  ),
  openSettingsIfDenied: true,
);
if(result.isSuccessful) {
    // Permission granted
} else {
    // Handle permission denial
}

Getting Current Location

Imagine you are a navigator looking for accurate maps. You can retrieve location using one of the three methods:

  • Last known location (most suitable for Android)
  • Single location update (preferred on iOS)
  • Current location (best of both worlds)

Here’s how you might get the current location:

StreamSubscription subscription =
    Geolocation.currentLocation(accuracy: LocationAccuracy.best).listen((result) {
  if(result.isSuccessful) {
      double latitude = result.location.latitude;
      double longitude = result.location.longitude;
      // Use the location
  }
});

Troubleshooting

Despite your best efforts, you may encounter issues. Here are some troubleshooting ideas:

  • Ensure location services are enabled on the device.
  • Check if the required permissions are declared in the configuration files.
  • If permission is denied, remind users they can allow it from the app settings.

For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.

Conclusion

At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

Stay Informed with the Newest F(x) Insights and Blogs

Tech News and Blog Highlights, Straight to Your Inbox