From 7fb514178b6e36aab10e777400ec6c91a68883ce Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Sat, 7 Jun 2025 19:20:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(pairing):=20=E4=BC=98=E5=8C=96=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E6=B5=81=E7=A8=8B=E7=9A=84=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加状态更新和延迟以提供更流畅的用户体验,包括: - 分阶段更新状态描述 - 添加视觉反馈延迟 - 完善错误处理时的状态更新 --- .../controllers/pairing_controller.dart | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/modules/pairing/controllers/pairing_controller.dart b/lib/modules/pairing/controllers/pairing_controller.dart index 64ac3ea26..4f32dfd4f 100644 --- a/lib/modules/pairing/controllers/pairing_controller.dart +++ b/lib/modules/pairing/controllers/pairing_controller.dart @@ -179,13 +179,24 @@ class PairingController extends GetxController { Logger.i(_tag, '开始执行初始化流程'); isLoading.value = true; - statusDescription.value = '正在检查权限...'; + statusDescription.value = '正在初始化...'; try { + // 初始视觉反馈延迟 + await Future.delayed(const Duration(milliseconds: 800)); + + // 更新状态让用户知道正在进行权限检查 + statusDescription.value = '正在检查所需权限...'; + // iOS平台跳过权限检查 if (!Platform.isIOS) { + // 添加额外视觉反馈延迟 + await Future.delayed(const Duration(milliseconds: 600)); + final hasPermission = await _checkAndRequestPermissions(); if (!hasPermission) { + statusDescription.value = '缺少必要的权限'; + await Future.delayed(const Duration(milliseconds: 500)); _transition(PairingState.exitNoPermission); return; } @@ -194,6 +205,10 @@ class PairingController extends GetxController { // 设置蓝牙状态监听 _setupBluetoothListener(); + // 更新状态让用户知道正在进行蓝牙检查 + statusDescription.value = '检查蓝牙状态...'; + await Future.delayed(const Duration(milliseconds: 400)); + // 检查蓝牙状态 final btState = BluetoothManager.to.bluetoothState; Logger.i(_tag, '当前蓝牙状态: $btState'); @@ -201,10 +216,14 @@ class PairingController extends GetxController { if (btState == 'on' || btState == 'unknown') { _transition(PairingState.btReady); } else { + statusDescription.value = '蓝牙未开启'; + await Future.delayed(const Duration(milliseconds: 500)); _transition(PairingState.exitBtOff); } } catch (e) { Logger.e(_tag, 'Init failed: $e'); + statusDescription.value = '初始化出错'; + await Future.delayed(const Duration(milliseconds: 500)); _transition(PairingState.exitNoPermission); } finally { isLoading.value = false;