{"id":2630272,"date":"2024-12-17T17:22:38","date_gmt":"2024-12-18T01:22:38","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2630272"},"modified":"2024-12-20T03:46:10","modified_gmt":"2024-12-20T11:46:10","slug":"handling-location-permission-in-flutter","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter","title":{"rendered":"Handling location permission in ArcGIS Maps SDK for Flutter"},"author":366402,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[738191],"tags":[768202,773372,776092,777732,35001],"industry":[],"product":[761642,776202],"class_list":["post-2630272","blog","type-blog","status-publish","format-standard","hentry","category-developers","tag-arcgis-maps-sdks-for-native-apps","tag-flutter","tag-flutter-maps-sdk","tag-location-display","tag-mobile-development","product-platform","product-sdk-flutter"],"acf":{"authors":[{"ID":366402,"user_firstname":"Kossi Martino","user_lastname":"Yovo","nickname":"Martino Yovo","user_nicename":"kyovo","display_name":"Martino Yovo","user_email":"kyovo@esri.com","user_url":"https:\/\/martinoyovo.com","user_registered":"2024-12-17 19:40:58","user_description":"Martino is a Product Engineer at Esri, a Google Developer Expert and a Developer Experience Engineer. He builds tools and SDKs that make technology more accessible and has supported thousands of developers through training, mentorship, and open-source contributions. Martino is passionate about helping engineers turn ideas into impactful products.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/11\/56723384-213x200.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"short_description":"Learn how to handle location permissions access in ArcGIS Maps SDK for Flutter for a seamless user experience and better permission management.","flexible_content":[{"acf_fc_layout":"content","content":"<p>The <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/announcements\/introducing-the-arcgis-maps-sdk-for-flutter\/\"><em>new ArcGIS Maps SDK for Flutter<\/em><\/a> simplifies accessing location data by automatically requesting permissions when a MapView\u2019s LocationDisplay starts for the first time. The LocationDisplay, a key component of the MapView, manages the familiar blue-dot location experience provided by the Flutter Maps SDK.<\/p>\n<p>However, relying only on this default behavior, which is typically triggered when the MapView is already visible, can disrupt the user experience. Proactively managing when and how permissions are requested, such as during onboarding or through a call-to-action before displaying the MapView for the first time, allows for a better user experience.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2631922,"id":2631922,"title":"Banner_location_permission","filename":"Banner_location_permission.png","filesize":289623,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Banner_location_permission.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\/banner_location_permission","alt":"Location Access Demo, built with the ArcGIS Maps SDK for Flutter","author":"366402","description":"Location Access Demo, built with the ArcGIS Maps SDK for Flutter","caption":"Location Access Demo, built with the ArcGIS Maps SDK for Flutter","name":"banner_location_permission","status":"inherit","uploaded_to":2630272,"date":"2024-12-18 01:12:51","modified":"2024-12-18 19:28:55","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1920,"height":1080,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Banner_location_permission-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Banner_location_permission.png","medium-width":464,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Banner_location_permission.png","medium_large-width":768,"medium_large-height":432,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Banner_location_permission.png","large-width":1920,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Banner_location_permission-1536x864.png","1536x1536-width":1536,"1536x1536-height":864,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Banner_location_permission.png","2048x2048-width":1920,"2048x2048-height":1080,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Banner_location_permission-826x465.png","card_image-width":826,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Banner_location_permission.png","wide_image-width":1920,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p><strong>In this article,<\/strong> we\u2019ll show how to use the <a href=\"https:\/\/developers.arcgis.com\/flutter\/\">ArcGIS Maps SDK for Flutter<\/a> alongside a third-party Flutter plugin, such as <a href=\"https:\/\/pub.dev\/packages\/permission_handler\">permission_handler<\/a>, to efficiently manage location permissions. Other permission management plugins are also available, providing additional options. With this approach, users have full control over granting location access and can easily navigate to settings to enable location when needed, ensuring the map functions as intended.<\/p>\n"},{"acf_fc_layout":"content","content":"<h3>Set up ArcGIS Maps SDK for Flutter<\/h3>\n<p>Before diving in, ensure your app is set up to use the Flutter Maps SDK. This includes:<\/p>\n<h4><strong>1. Adding the Dependency<\/strong><\/h4>\n<p>Add the <a href=\"https:\/\/pub.dev\/packages\/arcgis_maps\">arcgis_maps<\/a> package to your project. Run the following command in your terminal:<\/p>\n<p><code style=\"background-color: #f8f4f4; padding: 8px;\">flutter pub add arcgis_maps<\/code><\/p>\n<h4><strong>2. Configuring Your API Key<\/strong><\/h4>\n<p>Obtain an API key and configure your app for the Flutter Maps SDK. For detailed setup instructions, including platform-specific requirements, refer to the official <a href=\"https:\/\/developers.arcgis.com\/flutter\/get-started\/\">Flutter Maps SDK documentation<\/a>.<\/p>\n"},{"acf_fc_layout":"content","content":"<h3>Set up permission_handler plugin<\/h3>\n<p>The <a href=\"https:\/\/pub.dev\/packages\/permission_handler\"><code>permission_handler<\/code><\/a> plugin provides a cross-platform API for managing permissions on both iOS and Android. It allows you to request permissions such as storage, camera access, and location services, as well as check their status.<\/p>\n"},{"acf_fc_layout":"content","content":"<h4><strong>1. Add the permission_handler plugin<\/strong><\/h4>\n<p>Run the following command to add the <code>permission_handler<\/code> plugin to your project:<\/p>\n<p><code style=\"background-color: #f8f4f4; padding: 8px;\">flutter pub add permission_handler<\/code><\/p>\n<h4><strong>2. Configure platform-specific settings<\/strong><\/h4>\n<p>After adding the plugin, you need to configure platform-specific settings to ensure proper functionality.<\/p>\n"},{"acf_fc_layout":"content","content":"<h5><strong>Android configuration<\/strong><\/h5>\n<ul>\n<li>Add the required permissions to the <code>AndroidManifest.xml<\/code> file to access the device\u2019s location:\n<pre><code style=\"background-color: #f8f4f4; padding: 8px;\">&lt;uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" \/&gt;\r\n&lt;uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" \/&gt;\r\n<\/code><\/pre>\n<\/li>\n<\/ul>\n"},{"acf_fc_layout":"content","content":"<ul>\n<li>Update the <strong>compileSdkVersion<\/strong> in <code>android\/app\/build.gradle<\/code> to ensure compatibility with the SDK:\n<pre><code style=\"background-color: #f8f4f4; padding: 8px;\">android {\r\n   compileSdkVersion 33\r\n   ...\r\n}\r\n<\/code><\/pre>\n<\/li>\n<\/ul>\n"},{"acf_fc_layout":"content","content":"<h5><strong>iOS configuration<\/strong><\/h5>\n<p>To request user location access on iOS, include the following keys in your <code>ios\/Runner\/Info.plist<\/code> file.<\/p>\n<pre><code style=\"background-color: #f8f4f4; padding: 8px;\">NSLocationWhenInUseUsageDescription\r\nWe need your location to display maps and provide location-based services.\r\nNSLocationAlwaysAndWhenInUseUsageDescription\r\nWe need your location to display maps and provide location-based services.<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h3>Declare variables<\/h3>\n<p>Let\u2019s declare some essential variables that will help manage the <a href=\"https:\/\/developers.arcgis.com\/flutter\/maps-2d\/#mapview\">map view<\/a> and handle location data in the app. For the location permission status, we will focus specifically on <code>granted<\/code>, <code>denied<\/code>, and <code>permanentlyDenied<\/code>\u00a0for our purpose.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/1795a7b05d8f177671b360cbe520e232.pibb\">https:\/\/gist.github.com\/martinoyovo\/1795a7b05d8f177671b360cbe520e232.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h3>Initialize location permissions<\/h3>\n<p>Let\u2019s define the <code>initLocationPermissions()<\/code> method to check the initial status of location permissions. This method will help us determine whether location access has already been granted or not.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/c55aa343c0db1caf63b34be7f430ba28.pibb\">https:\/\/gist.github.com\/martinoyovo\/c55aa343c0db1caf63b34be7f430ba28.pibb<\/a>"},{"acf_fc_layout":"content","content":"<p>The <code>initLocationPermissions()<\/code> function allows us to perform the permission check as soon as the widget is initialized. It\u2019ll prompt a system dialog like the one displayed below:<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2631712,"id":2631712,"title":"Location permission request screen","filename":"2-1-e1734481832277.png","filesize":455803,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/2-1-e1734481832277.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\/2-70","alt":"Location permission request screen","author":"366402","description":"Location permission request screen","caption":"Location permission request screen","name":"2-70","status":"inherit","uploaded_to":2630272,"date":"2024-12-18 00:04:46","modified":"2024-12-18 19:33:16","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":350,"height":759,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/2-1-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/2-1-e1734481832277.png","medium-width":120,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/2-1-e1734481832277.png","medium_large-width":350,"medium_large-height":759,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/2-1-e1734481832277.png","large-width":350,"large-height":759,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/2-1-709x1536.png","1536x1536-width":709,"1536x1536-height":1536,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/2-1-945x2048.png","2048x2048-width":945,"2048x2048-height":2048,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/2-1-215x465.png","card_image-width":215,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/2-1-498x1080.png","wide_image-width":498,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3>Set up an interactive map with location display<\/h3>\n<p>Let\u2019s define a function called <code>_onMapViewReady<\/code>. This function will be triggered when the\u00a0<a href=\"https:\/\/developers.arcgis.com\/flutter\/api-reference\/reference\/arcgis_maps\/ArcGISMapView-class.html\"><code>ArcGISMapView<\/code><\/a> is fully initialized and ready for interaction.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/610ccddef38ad0e4894d686b1fa1bc5c.pibb\">https:\/\/gist.github.com\/martinoyovo\/610ccddef38ad0e4894d686b1fa1bc5c.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h3>Integrate with ArcGISMapView<\/h3>\n<p>Before we configure and display the <code>ArcGISMapView<\/code> widget, we need to ensure that location permissions are handled properly.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/a1aca4f2fa9016336ef3799f2d22e86a.pibb\">https:\/\/gist.github.com\/martinoyovo\/a1aca4f2fa9016336ef3799f2d22e86a.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h4><strong>1. When location permission is granted<\/strong><\/h4>\n<p>If the user has granted location permissions, we load the map and connect it to the <code>ArcGISMapView<\/code> widget. This is done through the <code>_onMapViewReady<\/code> function, which will be called when the map is fully ready.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/e86d051ffaa69f4b366eaddb96710dae.pibb\">https:\/\/gist.github.com\/martinoyovo\/e86d051ffaa69f4b366eaddb96710dae.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h4><strong>2. <\/strong><strong>When location permission is denied<\/strong><\/h4>\n<p>If the permission is denied (i.e., the user can still be prompted again), we display a button that allows the user to request location permissions.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/337c2d1a17ccaa081a64ef5822b7bb13.pibb\">https:\/\/gist.github.com\/martinoyovo\/337c2d1a17ccaa081a64ef5822b7bb13.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h4><strong>3. When location permission is permanently denied<\/strong><\/h4>\n<p>If the user has permanently denied the permission (i.e., they&#8217;ve selected &#8220;Don&#8217;t allow&#8221;), they can no longer be prompted through the app&#8217;s UI. In this case, we inform the user to go to the app settings manually and enable location permissions. We\u2019ll use the function <code>openAppSettings()<\/code> from the <code>permission_handler<\/code> plugin.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/f100ba9db68b6f477bdf6527f3a8632c.pibb\">https:\/\/gist.github.com\/martinoyovo\/f100ba9db68b6f477bdf6527f3a8632c.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h3>Stop location tracking on widget disposal<\/h3>\n<p>To ensure that location tracking doesn&#8217;t continue when the widget is no longer visible, we override the <code>dispose()<\/code> method.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":true,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/def7da39cfbaab449fb405ee4773e6a7.pibb\">https:\/\/gist.github.com\/martinoyovo\/def7da39cfbaab449fb405ee4773e6a7.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h3>Refresh permission status with app lifecycle<\/h3>\n<p>To ensure the app reacts correctly when the user returns from the settings after enabling location permissions, we need to introduce Flutter\u2019s <code><a href=\"https:\/\/api.flutter.dev\/flutter\/widgets\/WidgetsBindingObserver-class.html\">WidgetsBindingObserver<\/a><\/code>. This allows us to listen for lifecycle events, such as when the app resumes from the background.<\/p>\n"},{"acf_fc_layout":"content","content":"<h4><strong>Add WidgetsBindingObserver to your state class<\/strong><\/h4>\n<p>Let\u2019s make the widget&#8217;s state class a <code>WidgetsBindingObserver<\/code> and add an observer to our <code>initState<\/code>. This enables the app to track lifecycle changes.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":true,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/4e6fc8cbd6ce9e1386432e5fc4aed305.pibb\">https:\/\/gist.github.com\/martinoyovo\/4e6fc8cbd6ce9e1386432e5fc4aed305.pibb<\/a>"},{"acf_fc_layout":"content","content":"<p>We\u2019ll introduce a new boolean variable to track if the app settings were opened <code>_appSettingOpened<\/code>.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":true,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/62af877b9b55233152ed9344479b26d0.pibb\">https:\/\/gist.github.com\/martinoyovo\/62af877b9b55233152ed9344479b26d0.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h4><strong>Handle the app resuming<\/strong><\/h4>\n<p>Override the <code>didChangeAppLifecycleState<\/code> method to check for updates when the app resumes. Here\u2019s where we verify the current location permission status and update the app\u2019s state:<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":true,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/886bf99b4f39e99cc42145ae8eb3354d.pibb\">https:\/\/gist.github.com\/martinoyovo\/886bf99b4f39e99cc42145ae8eb3354d.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h4><strong>Update the dispose method<\/strong><\/h4>\n<p>Since we are now handling app lifecycle states with <code>WidgetsBindingObserver<\/code>, we need to remove lifecycle observer to avoid memory leaks. The updated dispose method should look like this:<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":true,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/def7da39cfbaab449fb405ee4773e6a7.pibb\">https:\/\/gist.github.com\/martinoyovo\/def7da39cfbaab449fb405ee4773e6a7.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h4><strong>Update the settings widget to handle app lifecycle state<\/strong><\/h4>\n<p>We need to update the <code>_buildSettingsWidget<\/code> widget to update the <code>_appSettingOpened<\/code> flag when the user interacts with device settings.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/gist.github.com\/martinoyovo\/7d5177bef7fdd75a925b19aa41b53ce7.pibb\">https:\/\/gist.github.com\/martinoyovo\/7d5177bef7fdd75a925b19aa41b53ce7.pibb<\/a>"},{"acf_fc_layout":"content","content":"<h3>Final result<\/h3>\n<p>By implementing app lifecycle handling and location permission checks, the app now automatically adjusts to location permission changes.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2631782,"id":2631782,"title":"Handling_location_permission_in_ArcGIS_Maps_SDK _or_Flutter","filename":"Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter.gif","filesize":1632920,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\/handling_location_permission_in_arcgis_maps_sdk-_or_flutter","alt":"A demo showing a user clicking 'Enable Location.' If permission is granted, the map loads. If denied, a settings page guides updates.","author":"366402","description":"A demo showing the user clicking the 'Enable Location' button. If the user allows location permission, the map is displayed. If permission is denied, a page appears with instructions to open app settings and update location permission. When the user returns to the app and grants permission in the settings, the map loads automatically.","caption":"A demo showing the user clicking the 'Enable Location' button. If the user allows location permission, the map is displayed. If permission is denied, a page appears with instructions to open app settings and update location permission. When the user returns to the app and grants permission in the settings, the map loads automatically.","name":"handling_location_permission_in_arcgis_maps_sdk-_or_flutter","status":"inherit","uploaded_to":2630272,"date":"2024-12-18 00:23:00","modified":"2024-12-18 00:24:37","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":350,"height":758,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter.gif","medium-width":121,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter.gif","medium_large-width":350,"medium_large-height":758,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter.gif","large-width":350,"large-height":758,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter.gif","1536x1536-width":350,"1536x1536-height":758,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter.gif","2048x2048-width":350,"2048x2048-height":758,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter-215x465.gif","card_image-width":215,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/Handling_location_permission_in_ArcGIS_Maps_SDK-_or_Flutter.gif","wide_image-width":350,"wide_image-height":758}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3>Conclusion<\/h3>\n<p>In this article, we explored how to manage location permissions using the Flutter Maps SDK. We also covered how to handle denied permissions and ensure that the app updates when users return from the settings.<\/p>\n<p>While the ArcGIS Maps SDK for Flutter provides a <a href=\"https:\/\/developers.arcgis.com\/flutter\/api-reference\/reference\/arcgis_maps\/SystemLocationDataSource-class.html\">built-in automatic permission handling<\/a>, in this blog article we integrated the third-party package <code><a href=\"https:\/\/pub.dev\/packages\/permission_handler\">permission_handler<\/a><\/code> to create a customized experience, as demonstrated throughout this guide.<\/p>\n<p>If you\u2019re new to Flutter, checkout <a href=\"https:\/\/docs.flutter.dev\/get-started\/codelab\">Flutter\u2019s get started page<\/a>. Ready to build your own ArcGIS-powered apps? Sign up for a free <a href=\"https:\/\/location.arcgis.com\/sign-up\/\">ArcGIS Location Platform account<\/a> today!<\/p>\n<p>We\u2019d love to hear your feedback and see what you\u2019re creating. Join the discussion on our new <a href=\"https:\/\/community.esri.com\/t5\/flutter-maps-sdk-questions\/bd-p\/flutter-maps-sdk-questions\">Esri Community Flutter Maps SDK<\/a> forum.<\/p>\n<p>The complete project code shared in this blog is available on <a href=\"https:\/\/github.com\/martinoyovo\/track_me_arcgis\">GitHub<\/a>.<\/p>\n"}],"related_articles":[{"ID":2600092,"post_author":"3811","post_date":"2024-11-25 07:55:15","post_date_gmt":"2024-11-25 15:55:15","post_content":"","post_title":"Introducing the ArcGIS Maps SDK for Flutter","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"introducing-the-arcgis-maps-sdk-for-flutter","to_ping":"","pinged":"","post_modified":"2024-11-26 11:40:30","post_modified_gmt":"2024-11-26 19:40:30","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2600092","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":2622922,"post_author":"10242","post_date":"2024-12-12 14:58:48","post_date_gmt":"2024-12-12 22:58:48","post_content":"","post_title":"How to map vehicle meeting points using ArcGIS Maps SDK for Flutter","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"map-vehicle-meeting-points-flutter","to_ping":"","pinged":"","post_modified":"2024-12-13 03:06:04","post_modified_gmt":"2024-12-13 11:06:04","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2622922","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":2451632,"post_author":"10242","post_date":"2024-08-08 06:27:44","post_date_gmt":"2024-08-08 13:27:44","post_content":"","post_title":"Mapping where coffee comes from with the Flutter Maps SDK beta","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"mapping-coffee-flutter-maps-sdk","to_ping":"","pinged":"","post_modified":"2024-08-09 07:05:28","post_modified_gmt":"2024-08-09 14:05:28","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2451632","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"show_article_image":true,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/12\/location-permission-code-snippet.jpg","wide_image":false},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Handling location permission in ArcGIS Maps SDK for Flutter<\/title>\n<meta name=\"description\" content=\"Learn how to handle location permissions access in ArcGIS Maps SDK for Flutter for a seamless user experience.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Handling location permission in ArcGIS Maps SDK for Flutter\" \/>\n<meta property=\"og:description\" content=\"Learn how to handle location permissions access in ArcGIS Maps SDK for Flutter for a seamless user experience.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-20T11:46:10+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\"},\"author\":{\"name\":\"Martino Yovo\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/6a6793a4e379c3efd9a8ca8650a626e6\"},\"headline\":\"Handling location permission in ArcGIS Maps SDK for Flutter\",\"datePublished\":\"2024-12-18T01:22:38+00:00\",\"dateModified\":\"2024-12-20T11:46:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"ArcGIS Maps SDKs for Native Apps\",\"flutter\",\"Flutter Maps SDK\",\"location display\",\"mobile development\"],\"articleSection\":[\"Developers\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\",\"name\":\"Handling location permission in ArcGIS Maps SDK for Flutter\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2024-12-18T01:22:38+00:00\",\"dateModified\":\"2024-12-20T11:46:10+00:00\",\"description\":\"Learn how to handle location permissions access in ArcGIS Maps SDK for Flutter for a seamless user experience.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Handling location permission in ArcGIS Maps SDK for Flutter\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/6a6793a4e379c3efd9a8ca8650a626e6\",\"name\":\"Martino Yovo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/11\/56723384-213x200.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/11\/56723384-213x200.png\",\"caption\":\"Martino Yovo\"},\"description\":\"Martino is a Product Engineer at Esri, a Google Developer Expert and a Developer Experience Engineer. He builds tools and SDKs that make technology more accessible and has supported thousands of developers through training, mentorship, and open-source contributions. Martino is passionate about helping engineers turn ideas into impactful products.\",\"sameAs\":[\"https:\/\/martinoyovo.com\",\"https:\/\/facebook.com\/yovo.martino\",\"https:\/\/instagram.com\/martinoyovo\",\"https:\/\/linkedin.com\/in\/martino-yovo\",\"https:\/\/x.com\/https:\/\/x.com\/martinoyovo\",\"https:\/\/www.youtube.com\/@martinoyovo\"],\"gender\":\"male\",\"award\":[\"Google Developer Expert\"],\"knowsAbout\":[\"Program Management\",\"Community Building and leading\",\"Youth Employment\",\"Youth Skilling\",\"Flutter\",\"Software Development\"],\"knowsLanguage\":[\"English\",\"French\",\"Ewe\"],\"jobTitle\":\"Product Engineer\",\"worksFor\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/kyovo\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Handling location permission in ArcGIS Maps SDK for Flutter","description":"Learn how to handle location permissions access in ArcGIS Maps SDK for Flutter for a seamless user experience.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter","og_locale":"en_US","og_type":"article","og_title":"Handling location permission in ArcGIS Maps SDK for Flutter","og_description":"Learn how to handle location permissions access in ArcGIS Maps SDK for Flutter for a seamless user experience.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2024-12-20T11:46:10+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter"},"author":{"name":"Martino Yovo","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/6a6793a4e379c3efd9a8ca8650a626e6"},"headline":"Handling location permission in ArcGIS Maps SDK for Flutter","datePublished":"2024-12-18T01:22:38+00:00","dateModified":"2024-12-20T11:46:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter"},"wordCount":9,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["ArcGIS Maps SDKs for Native Apps","flutter","Flutter Maps SDK","location display","mobile development"],"articleSection":["Developers"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter","name":"Handling location permission in ArcGIS Maps SDK for Flutter","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2024-12-18T01:22:38+00:00","dateModified":"2024-12-20T11:46:10+00:00","description":"Learn how to handle location permissions access in ArcGIS Maps SDK for Flutter for a seamless user experience.","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/sdk-flutter\/developers\/handling-location-permission-in-flutter#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Handling location permission in ArcGIS Maps SDK for Flutter"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/6a6793a4e379c3efd9a8ca8650a626e6","name":"Martino Yovo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/11\/56723384-213x200.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/11\/56723384-213x200.png","caption":"Martino Yovo"},"description":"Martino is a Product Engineer at Esri, a Google Developer Expert and a Developer Experience Engineer. He builds tools and SDKs that make technology more accessible and has supported thousands of developers through training, mentorship, and open-source contributions. Martino is passionate about helping engineers turn ideas into impactful products.","sameAs":["https:\/\/martinoyovo.com","https:\/\/facebook.com\/yovo.martino","https:\/\/instagram.com\/martinoyovo","https:\/\/linkedin.com\/in\/martino-yovo","https:\/\/x.com\/https:\/\/x.com\/martinoyovo","https:\/\/www.youtube.com\/@martinoyovo"],"gender":"male","award":["Google Developer Expert"],"knowsAbout":["Program Management","Community Building and leading","Youth Employment","Youth Skilling","Flutter","Software Development"],"knowsLanguage":["English","French","Ewe"],"jobTitle":"Product Engineer","worksFor":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/kyovo"}]}},"text_date":"December 17, 2024","author_name":"Martino Yovo","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/kyovo","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcGIS Maps SDK for Flutter","tag_data":[{"term_id":768202,"name":"ArcGIS Maps SDKs for Native Apps","slug":"arcgis-maps-sdks-for-native-apps","term_group":0,"term_taxonomy_id":768202,"taxonomy":"post_tag","description":"","parent":0,"count":30,"filter":"raw"},{"term_id":773372,"name":"flutter","slug":"flutter","term_group":0,"term_taxonomy_id":773372,"taxonomy":"post_tag","description":"","parent":0,"count":6,"filter":"raw"},{"term_id":776092,"name":"Flutter Maps SDK","slug":"flutter-maps-sdk","term_group":0,"term_taxonomy_id":776092,"taxonomy":"post_tag","description":"","parent":0,"count":5,"filter":"raw"},{"term_id":777732,"name":"location display","slug":"location-display","term_group":0,"term_taxonomy_id":777732,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":35001,"name":"mobile development","slug":"mobile-development","term_group":0,"term_taxonomy_id":35001,"taxonomy":"post_tag","description":"","parent":0,"count":8,"filter":"raw"}],"category_data":[{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":426,"filter":"raw"}],"product_data":[{"term_id":761642,"name":"ArcGIS Location Platform","slug":"platform","term_group":0,"term_taxonomy_id":761642,"taxonomy":"product","description":"","parent":36601,"count":215,"filter":"raw"},{"term_id":776202,"name":"ArcGIS Maps SDK for Flutter","slug":"sdk-flutter","term_group":0,"term_taxonomy_id":776202,"taxonomy":"product","description":"","parent":36601,"count":19,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=sdk-flutter","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2630272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/366402"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=2630272"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2630272\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=2630272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=2630272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=2630272"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=2630272"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=2630272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}