Browse Source

优化登录逻辑和倒计时逻辑,优化钱包刷新

ios
王子贤 4 months ago
parent
commit
09adc0052b
3 changed files with 48 additions and 2 deletions
  1. 44
      lib/controller/mine/login_controller.dart
  2. 5
      lib/pages/mine/login_page.dart
  3. 1
      lib/pages/mine/my_wallet_page.dart

44
lib/controller/mine/login_controller.dart

@ -1,12 +1,13 @@
import 'dart:async';
import 'package:dating_touchme_app/controller/global.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import '../../network/user_api.dart';
import 'user_controller.dart';
class LoginController extends GetxController {
class LoginController extends GetxController with WidgetsBindingObserver {
//
final phoneNumber = ''.obs;
//
@ -18,6 +19,10 @@ class LoginController extends GetxController {
//
final isLoggingIn = false.obs;
DateTime? startTime;
Timer? codeTimer;
// GetX依赖注入中获取UserApi实例
late UserApi _userApi;
// GetStorage实例token等信息
@ -28,6 +33,22 @@ class LoginController extends GetxController {
super.onInit();
// UserApi
_userApi = Get.find<UserApi>();
WidgetsBinding.instance.addObserver(this);
}
@override
void onClose() {
super.onClose();
WidgetsBinding.instance.removeObserver(this);
codeTimer?.cancel();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
_recalcLeftSeconds(); //
}
}
//
@ -69,8 +90,9 @@ class LoginController extends GetxController {
//
void startCountdown() {
startTime = DateTime.now();
countdownSeconds.value = 60;
Timer.periodic(const Duration(seconds: 1), (timer) {
codeTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
countdownSeconds.value--;
if (countdownSeconds.value <= 0) {
timer.cancel();
@ -78,6 +100,24 @@ class LoginController extends GetxController {
});
}
void _recalcLeftSeconds() {
if (startTime == null) return;
final now = DateTime.now();
final diff = now.difference(startTime!).inSeconds;
final left = 60 - diff;
if (left <= 0) {
countdownSeconds.value = 0;
codeTimer?.cancel();
} else {
countdownSeconds.value = left;
}
}
// - 使SmartDialog
// void clearErrorMessage() {}

5
lib/pages/mine/login_page.dart

@ -1,5 +1,6 @@
import 'package:dating_touchme_app/generated/assets.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
@ -77,6 +78,10 @@ class LoginPage extends StatelessWidget {
counterText: '',
),
keyboardType: TextInputType.phone,
inputFormatters: [
// 0-9
FilteringTextInputFormatter.digitsOnly,
],
maxLength: 11,
onChanged: (value) {
controller.phoneNumber.value = value;

1
lib/pages/mine/my_wallet_page.dart

@ -49,6 +49,7 @@ class MyWalletPage extends StatelessWidget {
controller.page.value = 1;
controller.walletHistoryList.clear();
await controller.getHistoryList();
await controller.getWalletData();
controller.listRefreshController.finishRefresh(IndicatorResult.success);
controller.listRefreshController.finishLoad(IndicatorResult.none);
},

Loading…
Cancel
Save