From 2e7c10f87d022d610e61c316f1003894f5288f14 Mon Sep 17 00:00:00 2001 From: Yandrik Date: Tue, 28 Apr 2026 19:56:54 +0200 Subject: [PATCH] fix(pairing): pairing flow preempt status read fix --- lib/pages/device_details_page.dart | 24 +++++++++++++++++++++++- lib/pages/devices_page.dart | 10 ---------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/lib/pages/device_details_page.dart b/lib/pages/device_details_page.dart index 1ad05ca..284507f 100644 --- a/lib/pages/device_details_page.dart +++ b/lib/pages/device_details_page.dart @@ -51,6 +51,11 @@ class _DeviceDetailsPageState extends ConsumerState { 2.77, 3.27, ]; + static const List _initialStatusRetryDelays = [ + Duration(milliseconds: 500), + Duration(milliseconds: 1500), + Duration(seconds: 3), + ]; bool _isExitingPage = false; bool _hasRequestedDisconnect = false; @@ -218,7 +223,24 @@ class _DeviceDetailsPageState extends ConsumerState { buttonDeviceId: widget.deviceAddress, ); - final initialStatusResult = await service.readStatus(); + var initialStatusResult = await service.readStatus(); + for (final delay in _initialStatusRetryDelays) { + if (initialStatusResult.isOk() || !mounted) { + break; + } + + await Future.delayed(delay); + if (!mounted) { + break; + } + + final bluetooth = ref.read(bluetoothProvider).value; + if (bluetooth == null || !isCurrentDeviceConnected(bluetooth)) { + break; + } + + initialStatusResult = await service.readStatus(); + } if (!mounted) { await service.dispose(); return; diff --git a/lib/pages/devices_page.dart b/lib/pages/devices_page.dart index e4206c0..2dd1a44 100644 --- a/lib/pages/devices_page.dart +++ b/lib/pages/devices_page.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:abawo_bt_app/controller/bluetooth.dart'; import 'package:abawo_bt_app/database/database.dart'; import 'package:abawo_bt_app/model/bluetooth_device_model.dart'; @@ -92,14 +90,6 @@ class _ConnectDevicePageState extends ConsumerState { switch (res) { case Ok(): - if (!Platform.isAndroid) { - controller.readCharacteristic( - device.id, - '0993826f-0ee4-4b37-9614-d13ecba4ffc2', - '0993826f-0ee4-4b37-9614-d13ecba40000', - ); - } - final notifier = ref.read(nConnectedDevicesProvider.notifier); final name = device.name.isNotEmpty ? device.name : 'Unknown Device'; final deviceCompanion = ConnectedDevicesCompanion(