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