如何在颤动中回调谷歌位置服务对话框按钮点击?

Posted

技术标签:

【中文标题】如何在颤动中回调谷歌位置服务对话框按钮点击?【英文标题】:How to get call back of Google location service dialog button click's in flutter? 【发布时间】:2019-07-12 07:22:44 【问题描述】:

我需要在我的 Flutter 应用中获取设备的当前位置。我添加的插件是 location: ^2.3.5 和 geolocator: ^5.0.1 以获取当前位置。 一切正常,但是当我的设备的 GPS 关闭(禁用)时,它会显示一个对话框,我已在图像中显示请检查它。我需要在按下确定按钮时回调,以便我可以获得当前位置并执行下一个代码线。如果你帮助我,我会感激你的。

这里有一些代码。

getCurrentLocation() async
try 
   await location.getLocation().then((locationData)
     if(locationData!=null)
     moveHomeWithLatLon(context,false,locationData.latitude.toString(),locationData.longitude.toString());
   else
     dialogInternetCheck(context, alert, "Please check location services on device");
   
  );
 on PlatformException catch (e) 
  if (e.code == 'PERMISSION_DENIED') 
    error = 'Permission denied';
    dialogInternetCheck(context, alert, "Location services "+error);
  

【问题讨论】:

面临同样的问题。你找到解决办法了吗? 【参考方案1】:

您应该在请求位置服务后查看服务状态结果。如果为真,则表示用户已提供访问权限。我提供了下面的例子

bool serviceStatusResult = await location.requestService();
 print("Service status activated after request: $serviceStatusResult");
  if (serviceStatusResult) 
    await _getCurrentLocation();
  

Future<bool> _getCurrentLocation() async 
try 
  Location location = Location();
  LocationData userLocation = await location.getLocation();
  on PlatformException catch (e) 
  Log.info("Location fetch failed : $e.toString()");
 
 return Future.value(true);

【讨论】:

我尝试了相同的代码,但无法执行 serviceStatusResult 的打印语句。请提出建议。 我再次检查了在 android 中运行代码并打印服务状态。

以上是关于如何在颤动中回调谷歌位置服务对话框按钮点击?的主要内容,如果未能解决你的问题,请参考以下文章

如何显示启用位置对话框,如谷歌地图?

如何显示启用位置对话框,如谷歌地图?

如何在谷歌地图应用程序中从另一个位置显示当前位置?

是否有任何公式可以在不使用谷歌地图的情况下获得两个位置之间的旅行时间或从颤动的距离

如何在谷歌地图中制作多个圆圈颤动[关闭]

使用当前位置将折线绘制到目的地,并在谷歌地图上添加标记,标记颤动