|
- 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);
- });
- }
- }
|