Browse Source

feat(pairing): 优化初始化流程的用户反馈体验

添加状态更新和延迟以提供更流畅的用户体验,包括:
- 分阶段更新状态描述
- 添加视觉反馈延迟
- 完善错误处理时的状态更新
weicu
lxm 1 year ago
parent
commit
7fb514178b
  1. 21
      lib/modules/pairing/controllers/pairing_controller.dart

21
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;

Loading…
Cancel
Save