diff --git a/lib/src/extension/bluetooth_characteristic_extension.dart b/lib/src/extension/bluetooth_characteristic_extension.dart index b34a4eb..91a7343 100644 --- a/lib/src/extension/bluetooth_characteristic_extension.dart +++ b/lib/src/extension/bluetooth_characteristic_extension.dart @@ -1,3 +1,4 @@ +import 'package:flutter_blue_plus_platform_interface/flutter_blue_plus_platform_interface.dart'; import 'package:flutter_blue_plus_windows/flutter_blue_plus_windows.dart'; extension BluetoothCharacteristicExtension on BluetoothCharacteristic { @@ -8,7 +9,8 @@ extension BluetoothCharacteristicExtension on BluetoothCharacteristic { characteristicUuid: characteristicUuid, descriptors: [for (final d in descriptors) d.toProto()], properties: properties.toProto(), - primaryServiceUuid: null, // TODO: API changes + primaryServiceUuid: null, + instanceId: 0, // TODO: API changes ); } } diff --git a/lib/src/extension/bluetooth_descriptor_extension.dart b/lib/src/extension/bluetooth_descriptor_extension.dart index b3c5e86..543e970 100644 --- a/lib/src/extension/bluetooth_descriptor_extension.dart +++ b/lib/src/extension/bluetooth_descriptor_extension.dart @@ -1,4 +1,5 @@ import 'package:flutter_blue_plus/flutter_blue_plus.dart'; +import 'package:flutter_blue_plus_platform_interface/flutter_blue_plus_platform_interface.dart'; extension BluetoothDescriptorExtension on BluetoothDescriptor { BmBluetoothDescriptor toProto() { @@ -7,7 +8,8 @@ extension BluetoothDescriptorExtension on BluetoothDescriptor { serviceUuid: serviceUuid, characteristicUuid: characteristicUuid, descriptorUuid: descriptorUuid, - primaryServiceUuid: null, // TODO: API changes + primaryServiceUuid: null, + instanceId: 0, // TODO: API changes ); } } diff --git a/lib/src/extension/bluetooth_service_extension.dart b/lib/src/extension/bluetooth_service_extension.dart index c094e2e..c2b0af5 100644 --- a/lib/src/extension/bluetooth_service_extension.dart +++ b/lib/src/extension/bluetooth_service_extension.dart @@ -1,3 +1,4 @@ +import 'package:flutter_blue_plus_platform_interface/flutter_blue_plus_platform_interface.dart'; import 'package:flutter_blue_plus_windows/flutter_blue_plus_windows.dart'; extension BluetoothServiceExtension on BluetoothService { diff --git a/lib/src/extension/characteristic_properties_extension.dart b/lib/src/extension/characteristic_properties_extension.dart index f254ba4..b61baaa 100644 --- a/lib/src/extension/characteristic_properties_extension.dart +++ b/lib/src/extension/characteristic_properties_extension.dart @@ -1,4 +1,5 @@ import 'package:flutter_blue_plus/flutter_blue_plus.dart'; +import 'package:flutter_blue_plus_platform_interface/flutter_blue_plus_platform_interface.dart'; extension CharacteristicPropertiesExtension on CharacteristicProperties { BmCharacteristicProperties toProto() { diff --git a/lib/src/windows/bluetooth_characteristic_windows.dart b/lib/src/windows/bluetooth_characteristic_windows.dart index e5d47ef..ca125ff 100644 --- a/lib/src/windows/bluetooth_characteristic_windows.dart +++ b/lib/src/windows/bluetooth_characteristic_windows.dart @@ -28,7 +28,8 @@ class BluetoothCharacteristicWindows extends BluetoothCharacteristic { serviceUuid: descriptor.serviceUuid, characteristicUuid: descriptor.characteristicUuid, descriptorUuid: descriptor.uuid, - primaryServiceUuid: null, // TODO: API changes + primaryServiceUuid: null, + instanceId: 0, // TODO: API changes ), ], properties: BmCharacteristicProperties( @@ -46,7 +47,8 @@ class BluetoothCharacteristicWindows extends BluetoothCharacteristic { // TODO: implementation missing indicateEncryptionRequired: false, ), - primaryServiceUuid: null, // TODO: API changes + primaryServiceUuid: null, + instanceId: 0, // TODO: API changes ), ); diff --git a/lib/src/windows/bluetooth_device_windows.dart b/lib/src/windows/bluetooth_device_windows.dart index d57fea0..a9a1fab 100644 --- a/lib/src/windows/bluetooth_device_windows.dart +++ b/lib/src/windows/bluetooth_device_windows.dart @@ -253,6 +253,7 @@ class BluetoothDeviceWindows extends FBP.BluetoothDevice { Future createBond({ int timeout = 90, // TODO: implementation missing + Uint8List? pin, }) async { try { await WinBle.pair(_address); diff --git a/lib/src/windows/flutter_blue_plus_windows.dart b/lib/src/windows/flutter_blue_plus_windows.dart index 901f965..d5d14c8 100644 --- a/lib/src/windows/flutter_blue_plus_windows.dart +++ b/lib/src/windows/flutter_blue_plus_windows.dart @@ -123,6 +123,15 @@ class FlutterBluePlusWindows { // TODO: compare with original lib static Stream> get scanResults => _scanResultsList.stream; + static Stream> get onScanResults { + if (isScanningNow) { + return _scanResultsList.stream; + } else { + // skip previous results & push empty list + return _scanResultsList.stream.skip(1).newStreamWithInitialValue([]); + } + } + static Stream get adapterState async* { await _initialize(); yield _state; diff --git a/lib/src/windows/windows.dart b/lib/src/windows/windows.dart index dd0b813..749b0e4 100644 --- a/lib/src/windows/windows.dart +++ b/lib/src/windows/windows.dart @@ -3,6 +3,7 @@ import 'dart:developer'; import 'dart:io'; import 'dart:typed_data'; +import 'package:flutter_blue_plus_platform_interface/flutter_blue_plus_platform_interface.dart'; import 'package:flutter_blue_plus_windows/flutter_blue_plus_windows.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart' as FBP; diff --git a/lib/src/wrapper/flutter_blue_plus_wrapper.dart b/lib/src/wrapper/flutter_blue_plus_wrapper.dart index 33da5a7..e56270b 100644 --- a/lib/src/wrapper/flutter_blue_plus_wrapper.dart +++ b/lib/src/wrapper/flutter_blue_plus_wrapper.dart @@ -68,6 +68,11 @@ class FlutterBluePlus { return FBP.FlutterBluePlus.scanResults; } + static Stream> get onScanResults { + if (Platform.isWindows) return FlutterBluePlusWindows.onScanResults; + return FBP.FlutterBluePlus.onScanResults; + } + static bool get isScanningNow { if (Platform.isWindows) return FlutterBluePlusWindows.isScanningNow; return FBP.FlutterBluePlus.isScanningNow; diff --git a/pubspec.yaml b/pubspec.yaml index d1a8c48..947fb5a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -8,6 +8,11 @@ environment: sdk: ">=3.0.0 <4.0.0" dependencies: - flutter_blue_plus: ">=1.32.4 <1.35.0" + # https://pub.dev/packages/flutter_blue_plus + flutter_blue_plus: ^1.36.8 + # https://pub.dev/packages/flutter_blue_plus_platform_interface + flutter_blue_plus_platform_interface: 7.0.0 + # https://pub.dev/packages/win_ble win_ble: ">=1.1.1" + # https://pub.dev/packages/stream_with_value stream_with_value: ">=0.5.0"