add
This commit is contained in:
@@ -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('登录流程结束,加载状态已重置');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user