|
|
@@ -1,15 +1,16 @@
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
import 'package:go_router/go_router.dart';
|
|
|
+import 'package:path/path.dart' as path;
|
|
|
import 'package:sino_med_cloud/l10n/app_localizations.dart';
|
|
|
import 'package:sino_med_cloud/core/constants/app_constants.dart';
|
|
|
import '../../../core/constants/api_constants.dart';
|
|
|
import '../../../core/network/dio_client.dart';
|
|
|
+import '../../../core/storage/local_storage.dart';
|
|
|
import '../../../core/utils/logger.dart';
|
|
|
import '../../../core/utils/crypto_utils.dart';
|
|
|
import 'login_provider.dart';
|
|
|
import 'package:dio/dio.dart';
|
|
|
-import 'package:path/path.dart' as path;
|
|
|
|
|
|
class LoginPage extends ConsumerStatefulWidget {
|
|
|
const LoginPage({super.key});
|
|
|
@@ -107,38 +108,48 @@ class _LoginPageState extends ConsumerState<LoginPage>
|
|
|
|
|
|
// 密码登录
|
|
|
void _handlePasswordLogin() async {
|
|
|
- // 当前手机号及密码的格式已经验证过
|
|
|
- if (_passwordFormKey.currentState!.validate()) {
|
|
|
- final phoneNumber = ref.watch(passwordLoginPhoneProvider);
|
|
|
- final password = ref.watch(passwordLoginPasswordProvider);
|
|
|
-
|
|
|
- // 对密码进行 MD5 加密
|
|
|
- final encryptedPassword = CryptoUtils.md5(password);
|
|
|
+ try {
|
|
|
+ // 当前手机号及密码的格式已经验证过
|
|
|
+ if (_passwordFormKey.currentState!.validate()) {
|
|
|
+ final phoneNumber = ref.watch(passwordLoginPhoneProvider);
|
|
|
+ final password = ref.watch(passwordLoginPasswordProvider);
|
|
|
|
|
|
- final parame = {
|
|
|
- "mobile": phoneNumber,
|
|
|
- "login_system": _loginSystem,
|
|
|
- // "password": '6730d7b53ea42d2b0b88ae6ba590812b',
|
|
|
- "password": encryptedPassword,
|
|
|
- "login_type": _loginType
|
|
|
- };
|
|
|
- AppLogger.d('登录请求参数parame: $parame');
|
|
|
+ // 对密码进行 MD5 加密
|
|
|
+ final encryptedPassword = CryptoUtils.md5(password);
|
|
|
|
|
|
- Response response = await DioClient.post<Map<String, dynamic>>(
|
|
|
- path.join(ApiConstants.baseUrl, ApiConstants.login),
|
|
|
- data: parame,
|
|
|
- );
|
|
|
- if (response.statusCode == 200) {
|
|
|
+ final parame = {
|
|
|
+ "mobile": phoneNumber,
|
|
|
+ "login_system": _loginSystem,
|
|
|
+ "password": encryptedPassword,
|
|
|
+ "login_type": _loginType
|
|
|
+ };
|
|
|
+ AppLogger.d('登录请求参数parame: $parame');
|
|
|
+ Response response = await DioClient.post<Map<String, dynamic>>(
|
|
|
+ path.join(ApiConstants.baseUrl, ApiConstants.login),
|
|
|
+ data: parame,
|
|
|
+ );
|
|
|
+ if (response.statusCode == 200) {
|
|
|
final data = response.data;
|
|
|
if (data['code'] == 20000) {
|
|
|
AppLogger.d('登录成功: $data');
|
|
|
+ final jsonData = data['data'];
|
|
|
+ final accessToken = jsonData['access_token'];
|
|
|
+ final userInfo = jsonData['user_info'];
|
|
|
+ LocalStorage.saveToken(accessToken);
|
|
|
+ LocalStorage.saveUserInfo(userInfo);
|
|
|
if (mounted) {
|
|
|
context.replace('/mainTab');
|
|
|
}
|
|
|
} else {
|
|
|
AppLogger.d('登录失败: $data');
|
|
|
}
|
|
|
+ } else {
|
|
|
+ AppLogger.d('密码登录请求错误: ${response.statusCode}, ${response.statusMessage}');
|
|
|
+ }
|
|
|
}
|
|
|
+ } catch (e) {
|
|
|
+ AppLogger.e('密码登录错误:handlePasswordLogin', e);
|
|
|
+ rethrow;
|
|
|
}
|
|
|
}
|
|
|
|