Showing
1 changed file
with
12 additions
and
0 deletions
| @@ -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 | } |
-
Please register or login to post a comment