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 'dart:async';
import 'package:dating_touchme_app/controller/global.dart'; import 'package:dating_touchme_app/controller/global.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart'; import 'package:get_storage/get_storage.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import '../../network/user_api.dart'; import '../../network/user_api.dart';
import 'user_controller.dart'; import 'user_controller.dart';
class LoginController extends GetxController {
class LoginController extends GetxController with WidgetsBindingObserver {
// //
final phoneNumber = ''.obs; final phoneNumber = ''.obs;
// //
@ -18,6 +19,10 @@ class LoginController extends GetxController {
// //
final isLoggingIn = false.obs; final isLoggingIn = false.obs;
DateTime? startTime;
Timer? codeTimer;
// GetX依赖注入中获取UserApi实例 // GetX依赖注入中获取UserApi实例
late UserApi _userApi; late UserApi _userApi;
// GetStorage实例token等信息 // GetStorage实例token等信息
@ -28,6 +33,22 @@ class LoginController extends GetxController {
super.onInit(); super.onInit();
// UserApi // UserApi
_userApi = Get.find<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() { void startCountdown() {
startTime = DateTime.now();
countdownSeconds.value = 60; countdownSeconds.value = 60;
Timer.periodic(const Duration(seconds: 1), (timer) {
codeTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
countdownSeconds.value--; countdownSeconds.value--;
if (countdownSeconds.value <= 0) { if (countdownSeconds.value <= 0) {
timer.cancel(); 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 // - 使SmartDialog
// void clearErrorMessage() {} // void clearErrorMessage() {}

5
lib/pages/mine/login_page.dart

@ -1,5 +1,6 @@
import 'package:dating_touchme_app/generated/assets.dart'; import 'package:dating_touchme_app/generated/assets.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@ -77,6 +78,10 @@ class LoginPage extends StatelessWidget {
counterText: '', counterText: '',
), ),
keyboardType: TextInputType.phone, keyboardType: TextInputType.phone,
inputFormatters: [
// 0-9
FilteringTextInputFormatter.digitsOnly,
],
maxLength: 11, maxLength: 11,
onChanged: (value) { onChanged: (value) {
controller.phoneNumber.value = 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.page.value = 1;
controller.walletHistoryList.clear(); controller.walletHistoryList.clear();
await controller.getHistoryList(); await controller.getHistoryList();
await controller.getWalletData();
controller.listRefreshController.finishRefresh(IndicatorResult.success); controller.listRefreshController.finishRefresh(IndicatorResult.success);
controller.listRefreshController.finishLoad(IndicatorResult.none); controller.listRefreshController.finishLoad(IndicatorResult.none);
}, },

Loading…
Cancel
Save