connect method

Future<void> connect({
  1. Duration? timeout,
  2. bool autoConnect = true,
})

Establishes a connection to the Bluetooth Device.

Implementation

Future<void> connect({
  Duration? timeout,
  bool autoConnect = true,
}) async {
  var request = protos.ConnectRequest.create()
    ..remoteId = id.toString()
    ..androidAutoConnect = autoConnect;

  Timer? timer;
  if (timeout != null) {
    timer = Timer(timeout, () {
      disconnect();
      throw TimeoutException('Failed to connect in time.', timeout);
    });
  }

  await FlutterBlue.instance._channel
      .invokeMethod('connect', request.writeToBuffer());

  await state.firstWhere((s) => s == BluetoothDeviceState.connected);

  timer?.cancel();

  return;
}