news_getx/lib/modules/sign_in/sign_in_controller.dart

64 lines
1.7 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:get/get.dart';
import 'package:news_getx/data/model/user.dart';
import 'package:news_getx/data/repository/user_repository.dart';
import 'package:news_getx/data/services/user.dart';
import 'package:news_getx/modules/widgets/toast.dart';
import 'package:news_getx/routes/app_pages.dart';
import 'package:news_getx/utils/security.dart';
import 'package:news_getx/utils/validator.dart';
class SignInController extends GetxController {
final UserRepository repository;
// email的控制器
final TextEditingController emailController = TextEditingController();
// 密码的控制器
final TextEditingController passwordController = TextEditingController();
SignInController({required this.repository});
// 跳转 注册界面
handleNavSignUp() {
Get.toNamed(AppRoutes.Signup);
}
// 忘记密码
handleForgotPassword() {
toastInfo(msg: "忘记密码");
}
// 执行登录操作
handleSignIn() async {
if (!isEmail(emailController.text)) {
toastInfo(msg: "请输入正确的邮箱");
return;
}
if (!checkStringLength(passwordController.text, 6)) {
toastInfo(msg: '密码不能小于6位');
return;
}
UserLoginRequest request = UserLoginRequest(
email: emailController.text,
password: cryptoSha256(passwordController.text),
);
UserLoginResponse response = await repository.login(request);
// 设置令牌和用户信息
UserService.to.saveProfile(response);
UserService.to.setToken(response.accessToken!);
Get.offAndToNamed(AppRoutes.Application);
}
@override
void dispose() {
emailController.dispose();
passwordController.dispose();
super.dispose();
}
}