This commit is contained in:
vipg
2025-11-13 17:53:04 +08:00
parent cc33c46ef3
commit 90c5290635

View File

@@ -31,6 +31,9 @@ class _LoginPageState extends State<LoginPage> {
return;
}
// 新增:打印输入的账号密码(注意:生产环境需移除密码日志)
debugPrint('准备登录 - 账号: $account, 密码长度: ${password.length}');
setState(() {
_isLoading = true;
});
@@ -45,20 +48,38 @@ class _LoginPageState extends State<LoginPage> {
// 初始化Dio实例
final dio = Dio();
// 新增打印Dio配置信息
debugPrint(
'Dio基础配置 - 超时设置: 连接${dio.options.connectTimeout}, 发送${dio.options.sendTimeout}, 接收${dio.options.receiveTimeout}',
);
// 准备请求数据
final requestData = {'account': account, 'password': password};
// 新增:打印请求参数
debugPrint('请求参数: $requestData');
// 准备请求头
final requestHeaders = {'Content-Type': 'application/json'};
// 新增:打印请求头
debugPrint('请求头: $requestHeaders');
// 发送POST请求
debugPrint('开始发送登录请求...');
final response = await dio.post(
url,
data: {'account': account, 'password': password},
data: requestData,
options: Options(
headers: {'Content-Type': 'application/json'},
headers: requestHeaders,
responseType: ResponseType.json,
),
);
// 新增:请求发送成功的日志
debugPrint('请求发送成功,开始处理响应');
// 解析响应
if (response.statusCode == 200) {
final result = response.data;
// 打印后端返回的完整数据确认code和状态
debugPrint('登录响应:$result');
if (result['success'] == true) {
@@ -66,10 +87,9 @@ class _LoginPageState extends State<LoginPage> {
// 保存token和用户信息到本地存储
final prefs = await SharedPreferences.getInstance();
await prefs.setString('user_id', result['data']['user_id']); // 保存用户ID
await prefs.setString('user_id', result['data']['user_id']);
debugPrint('保存的用户ID: ${result['data']['user_id']}');
// 延迟后再检查上下文是否仍有效
if (mounted) {
Navigator.pushReplacement(
context,
@@ -77,20 +97,23 @@ class _LoginPageState extends State<LoginPage> {
);
}
} else {
// 登录失败,显示错误信息
_showDialog('登录失败', result['message'] ?? '未知错误');
}
} else {
_showDialog('错误', '服务器响应异常: ${response.statusCode}');
debugPrint('服务器响应异常: ${response.statusCode}');
debugPrint('服务器响应异常: ${response.statusCode}, 响应内容: ${response.data}');
}
} on DioException catch (e) {
// 处理Dio异常
String errorMessage = '网络请求失败';
// 新增:详细的异常类型日志
debugPrint('Dio异常类型: ${e.type}, 错误代码: ${e.error}');
if (e.response != null) {
errorMessage =
'请求失败: ${e.response?.statusCode} - ${e.response?.statusMessage}';
debugPrint('响应数据: ${e.response?.data}');
debugPrint('响应头: ${e.response?.headers}');
} else if (e.type == DioExceptionType.connectionTimeout) {
errorMessage = '连接超时,请检查网络';
} else if (e.type == DioExceptionType.receiveTimeout) {
@@ -99,18 +122,31 @@ class _LoginPageState extends State<LoginPage> {
errorMessage = '发送数据超时';
} else if (e.type == DioExceptionType.connectionError) {
errorMessage = '网络连接错误,请检查网络设置';
// 新增:连接错误时打印详细信息
debugPrint('连接错误详情: ${e.message}');
} else if (e.type == DioExceptionType.badCertificate) {
errorMessage = '证书验证失败';
} else if (e.type == DioExceptionType.cancel) {
errorMessage = '请求已取消';
} else if (e.type == DioExceptionType.badResponse) {
errorMessage = '服务器返回错误响应';
}
_showDialog('错误', errorMessage);
debugPrint('详细错误信息: ${e.toString()}');
// 新增:打印堆栈跟踪
debugPrint('错误堆栈: ${e.stackTrace}');
} catch (e) {
_showDialog('错误', '发生未知错误: $e');
debugPrint('详细错误信息: ${e.toString()}');
// 新增:打印未知错误的类型
debugPrint('未知错误类型: ${e.runtimeType}');
} finally {
if (mounted) {
setState(() {
_isLoading = false;
});
debugPrint('登录流程结束,加载状态已重置');
}
}
}