import 'dart:async'; import 'dart:convert'; import 'package:demo001/main.dart'; import 'package:demo001/scenes/public.dart'; import 'package:demo001/tools/http_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:demo001/tools/widgets.dart'; import 'login_state.dart'; /// @description: /// @author /// @date: 2025-01-11 17:25:10 class LoginLogic extends GetxController { final state = LoginState(); @override void onInit() { super.onInit(); } @override void onReady() { super.onReady(); _getLoginInfo(); _checkPermission(); } void _checkPermission() { state.methodChannel.invokeMethod("bluetoothPermissionRequest"); } void _getLoginInfo() async { EasyLoading.show(); final info = await getSharedLoginInfo(); if (info != null) { state.emailContr.text = info.data?.user?.mail ?? ''; Future.delayed(1.seconds, () { EasyLoading.dismiss(); Get.offAll(() => IndexWidget()); }); } else { EasyLoading.dismiss(); } } void getEmailPin() { if (state.countDown.value != 60) return; state.pinCodeTimer = Timer.periodic(1.seconds, (t) { if (state.countDown.value <= 0) { t.cancel(); state.pinCodeTimer?.cancel(); state.pinCodeTimer = null; state.countDown.value = 60; } else { state.countDown.value = state.countDown.value - 1; } }); EasyLoading.show(); ApiClient.post( url: ApiClient.getPin, param: {"addr": state.emailContr.text, "vtype": 0}, onSuccess: (data) { EasyLoading.showInfo('验证码已发送,请到邮箱查看!'); }, onFailed: (msg) { EasyLoading.showError(msg); }); } void login() { FocusScope.of(Get.context!).unfocus(); if (!isEmail(state.emailContr.text)) { EasyLoading.showError('邮箱错误!'); return; } if (state.pinContr.text.length != 4) { EasyLoading.showError('验证码错误!'); return; } EasyLoading.show(); ApiClient.post( url: ApiClient.login, param: { "mail": state.emailContr.text, "openid": "", "phone": "", "stype": 0, "vcode": state.pinContr.text }, onSuccess: (data) async { EasyLoading.dismiss(); final instance = await SharedPreferences.getInstance(); await instance.setString('loginInfo', jsonEncode(data)); Get.offAll(() => IndexWidget()); }, onFailed: (msg) { EasyLoading.showError(msg); }); } }