我无法在flutter应用程序中获得iOS中的蓝牙打印机列表。
该应用程序在Android中运行完美,我也能够从Android设备打印。
我正在使用一个名为flutter_blue_plus 1.5.2的软件包,我安装在pubspec.yaml中:
-> flutter_blue_plus: ^1.3.1
我的iOS信息.plist
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Need BLE permission</string>
<key> NSBluetoothPeripheralUsageDescription</key>
<string>Need BLE permission</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string> Need Location permission</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Need Location permission</string>
<key NSLocationWhenInUseUsageDescription</key>
<string>Need Location permission</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>This app uses bluetooth</string>
我正在扫描蓝牙设备,如下所示:
FlutterBluePlus flutterBlue = FlutterBluePlus.instance;
List<ScanResult> scanResult;
@override
void initState() {
super.initState();
findDevices();
}
void findDevices() {
// if(await Permission.b)
if (flutterBlue.isOn != null) {
flutterBlue.startScan(timeout: const Duration(seconds: 4));
flutterBlue.scanResults.listen((results) {
setState(() {
scanResult = results;
});
});
flutterBlue.stopScan();
}
}
我得到的错误,而试图调试应用程序在我们的iOS
2023-05-26 00:30:01.250916+0530 Runner[1044:250516] [CoreBluetooth] API MISUSE: <CBCentralManager: 0x282d5c000> can only accept this command while in the powered on state
2023-05-26 00:30:01.288553+0530 Runner[1044:250516] [CoreBluetooth] API MISUSE: <CBCentralManager: 0x282d5c000> can only accept this command while in the powered on state
1条答案
按热度按时间s3fp2yjn1#
从实现的Angular 来看,我建议只在
.isOn
返回true时才开始扫描,因为即使.isOn
返回false,您也可以开始扫描,这表明蓝牙堆栈尚未准备好。这解释了您可以在调试控制台中看到的错误。为了独立于Widget的初始化时间,我建议依赖于流
.state
,并且只在状态为BluetoothState.On
时对FlutterBluePlus.instance
进行操作。