Commit 9724003b6e30a6ed6a630943f321cf8774d41cc7

Authored by 常守达
1 parent 953738fd

fix(login):checkbox连点问题

@@ -48,7 +48,17 @@ class LoginController extends GetxController { @@ -48,7 +48,17 @@ class LoginController extends GetxController {
48 48
49 AppleSignInModel? appleSignInModel; 49 AppleSignInModel? appleSignInModel;
50 50
  51 + DateTime? _lastToggleTime;
  52 +
51 Future<void> toggleTermsChecked() async { 53 Future<void> toggleTermsChecked() async {
  54 + // 防抖:300ms 内的重复调用直接忽略,防止积压的手势事件互相抵消勾选状态
  55 + final now = DateTime.now();
  56 + if (_lastToggleTime != null &&
  57 + now.difference(_lastToggleTime!) < const Duration(milliseconds: 300)) {
  58 + return;
  59 + }
  60 + _lastToggleTime = now;
  61 +
52 final newValue = !termsChecked.value; 62 final newValue = !termsChecked.value;
53 termsChecked.value = newValue; 63 termsChecked.value = newValue;
54 try { 64 try {
@@ -56,6 +66,8 @@ class LoginController extends GetxController { @@ -56,6 +66,8 @@ class LoginController extends GetxController {
56 await local.setTermsAgreed(newValue); 66 await local.setTermsAgreed(newValue);
57 if (newValue) { 67 if (newValue) {
58 unawaited(() async { 68 unawaited(() async {
  69 + // 等待 Flutter 完成当前帧渲染,让勾选图标先显示
  70 + await WidgetsBinding.instance.endOfFrame;
59 if (!_userStateService.sdksInitialized) { 71 if (!_userStateService.sdksInitialized) {
60 await _userStateService.initializeSdks(); 72 await _userStateService.initializeSdks();
61 } 73 }