writeCharacteristic method

  1. @override
Future<void> writeCharacteristic({
  1. required String deviceId,
  2. required String serviceUuid,
  3. required String characteristicUuid,
  4. required List<int> value,
  5. BluetoothWriteType writeType = BluetoothWriteType.withResponse,
})
override

实现 FlutterBluetoothPluginPlatform.writeCharacteristic

Web 会优先使用 writeValueWithResponse/writeValueWithoutResponse,必要时回退到旧版 writeValue。

Implementation

@override
Future<void> writeCharacteristic({
  required String deviceId,
  required String serviceUuid,
  required String characteristicUuid,
  required List<int> value,
  BluetoothWriteType writeType = BluetoothWriteType.withResponse,
}) async {
  final characteristic = await _characteristic(
    deviceId: deviceId,
    serviceUuid: serviceUuid,
    characteristicUuid: characteristicUuid,
  );
  final data = Uint8List.fromList(value).toJS;
  final object = characteristic as JSObject;
  if (writeType == BluetoothWriteType.withoutResponse &&
      object.has('writeValueWithoutResponse')) {
    await characteristic.writeValueWithoutResponse(data).toDart;
    return;
  }
  if (writeType == BluetoothWriteType.withResponse &&
      object.has('writeValueWithResponse')) {
    await characteristic.writeValueWithResponse(data).toDart;
    return;
  }
  await characteristic.writeValue(data).toDart;
}