Flutter 应用需要检查蓝牙和位置是不是启用
Posted
技术标签:
【中文标题】Flutter 应用需要检查蓝牙和位置是不是启用【英文标题】:Flutter app needs to check if Bluetooth and Location enabledFlutter 应用需要检查蓝牙和位置是否启用 【发布时间】:2020-07-30 02:56:56 【问题描述】:我正在使用 Flutter 应用程序,使用名为 flutter_blue 的 Dart 包连接到蓝牙设备。蓝牙设备连接成功,但前提是用户在其设备上启用了蓝牙和位置。我正在尝试找到一种方法来检测设备上是否启用了位置和蓝牙,然后再尝试连接,以便我可以提示用户打开它们。目前,我还在使用与原生 android 意图一起使用的 Dart 包来为每个意图显示设置菜单(也可以使用)。我只需要一种方法来检查它们是否已启用,以便我知道是否为用户显示设置菜单以启用它们。
【问题讨论】:
【参考方案1】:我希望这仍然有用
您可以通过以下方式检查蓝牙是否启用:
Future<bool> _checkDeviceBluetoothIsOn() async
return await flutterBlue.isOn;
并检查是否使用PermissionHandler 包启用了位置:
Future<bool> _checkDeviceLocationIsOn() async
return await Permission.locationWhenInUse.serviceStatus.isEnabled;
【讨论】:
【参考方案2】:我正在处理与您实际相同的情况,我检查它的方式是使用以下内容:
为了检查蓝牙激活,你可以监听flutter blue库提供的状态流,你可以像下面这样访问它:
FlutterBlue.instance.state
对于位置,我没有找到一种“原生的颤动方式”来做到这一点,所以我使用了地理定位器包,它使您能够检查位置是否处于活动状态。
它为您提供了一个未来,它可以解析为布尔值,即 true 表示活动,false 表示禁用。
Geolocator().isLocationServiceEnabled()
【讨论】:
以上是关于Flutter 应用需要检查蓝牙和位置是不是启用的主要内容,如果未能解决你的问题,请参考以下文章