使用flutter_reactive_ble通过蓝牙连接时遇到问题



👋大家好!

我目前正在使用flutter_reactive_ble包

但我正在努力使连接一致

昨天我认为问题肯定来自:

if (connectionState.connectionState == DeviceConnectionState.connected)

因为大多数时候它显示为"连接",但如果它显示为"连接",我不知道如何等待它连接。没有像睡眠一样的循环检查,这里的目标是快速运行,以便Ux良好

我正在工作的Mac M1💻和测试Android🤖

p代码不干净,但目标是使它工作。⚙️

希望有人能帮忙🙏


import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:qrcode/enum/characteristic_enum.dart';
class CadenaData extends StatefulWidget {
CadenaData({Key? key}) : super(key: key);
@override
State<CadenaData> createState() => _CadenaDataState();
}
class _CadenaDataState extends State<CadenaData> {
final flutterReactiveBle = FlutterReactiveBle();
@protected
@mustCallSuper

void findCadena(BuildContext context) async {
flutterReactiveBle.connectToDevice(
id: "DC:30:FC:9F:45:91",
connectionTimeout: const Duration(seconds: 10),
).listen(
(connectionState) async {
if (connectionState.connectionState ==   DeviceConnectionState.connected) {
//doing stuff

} else {
print("connection failedn $connectionState.connectionState");
};
},
onError: (error) {
print("error on connect $error");
},
);
}

我用"StreamSubscription"接收"FlutterReactiveBle.connectToDevice()"的结果

和一个开关箱来管理流的不同输出。

late StreamSubscription<dynamic> _currentConnectionStream;
_currentConnectionStream = flutterReactiveBle
.connectToDevice(
id: "DC:30:FC:9F:45:91",
connectionTimeout: const Duration(seconds: 15),
)
.listen(
(connectionState) async {
switch (connectionState.connectionState) {
case DeviceConnectionState.connecting:
print("-- Connecting to device --");
break;
case DeviceConnectionState.connected:
print(" -- Connected --");
break;
case DeviceConnectionState.disconnecting:
print("-- disconnecting --");
break;
case DeviceConnectionState.disconnected:
print("-- disconnected --");
break;
}
},
onError: (error) {
print("error on connect $error n");
},
);

相关内容

最新更新