ensureConnected method
确保已连接
Implementation
Future<void> ensureConnected() async {
if (disconnected || disposed) {
throw Exception("Peripheral has been disconnected of disposed");
}
if (connected) {
return;
}
if (ensureConnectedFuture != null) {
return ensureConnectedFuture;
}
Completer<void> completer = Completer();
void Function()? clear;
void connectedHandler(peripheral) {
if (clear != null) {
clear();
}
completer.complete();
}
void disconnectedHandler(peripheral) {
if (clear != null) {
clear();
}
completer.completeError("connect fail");
}
void connectedErrorHandler(peripheral, error) {
if (clear != null) {
clear();
}
completer.completeError("connect error");
}
clear = () {
removeConnectedListener(connectedHandler);
removeDisconnectedListener(disconnectedHandler);
removeConnectErrorListener(connectedErrorHandler);
};
addConnectedListener(connectedHandler);
addDisconnectedListener(disconnectedHandler);
addConnectErrorListener(connectedErrorHandler);
if (!connecting) {
connect();
}
ensureConnectedFuture = completer.future;
return ensureConnectedFuture!;
}