diff --git a/lib/utils/http_utils.dart b/lib/utils/http_utils.dart index 0787503..6420a2b 100644 --- a/lib/utils/http_utils.dart +++ b/lib/utils/http_utils.dart @@ -108,7 +108,7 @@ class HttpUtil { // 没有转换器时尝试直接返回(可能不安全,建议提供转换器) return response.data; } catch (e) { - rethrow; + throw Exception(_handleError(e)); } } @@ -171,7 +171,7 @@ class HttpUtil { ); // 错误处理 - void _handleError(dynamic error) { + String _handleError(dynamic error) { String errorMessage = '未知错误'; if (error is DioException) { switch (error.type) { @@ -218,7 +218,7 @@ class HttpUtil { } logger.e(errorMessage); - // showErrorToast(errorMessage); + return errorMessage; } String _getHttpErrorMessage(int statusCode) { diff --git a/lib/utils/log_utils.dart b/lib/utils/log_utils.dart index f571317..4ec27aa 100644 --- a/lib/utils/log_utils.dart +++ b/lib/utils/log_utils.dart @@ -1,12 +1,34 @@ -import 'package:logger/logger.dart'; +import 'dart:convert'; +import 'dart:io'; -// 全局日志实例,在整个项目中共享 -final Logger logger = Logger( - printer: PrettyPrinter( - methodCount: 1, - colors: true, - dateTimeFormat: DateTimeFormat.dateAndTime, - ), - // 可选:配置输出到文件(需配合文件操作库) - // output: FileOutput(file: File('logs/app.log')), -); \ No newline at end of file +import 'package:flutter/foundation.dart'; +import 'package:logger/logger.dart'; +import 'package:path_provider/path_provider.dart'; + +// 全局日志实例 +late Logger logger; + +// 初始化日志 +Future initLogger() async { + if (kIsWeb) { + logger = Logger( + printer: SimplePrinter(printTime: true), + output: ConsoleOutput(), + ); + } else { + final directory = await getExternalStorageDirectory(); + final logFile = File('${directory?.path}/logs/app.log'); + + // 确保文件存在(会自动创建) + await logFile.create(recursive: true); + + logger = Logger( + filter: ProductionFilter(), + printer: SimplePrinter(printTime: true), + output: MultiOutput([ + ConsoleOutput(), + FileOutput(file: logFile, overrideExisting: true, encoding: utf8), + ]), + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index 375f1ce..47f0b34 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -404,10 +404,10 @@ packages: dependency: "direct main" description: name: intl - sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" + sha256: "1ca20c894b1717686a2319b8548763d812bc0aabdac580420a44c5178c57a867" url: "https://pub.flutter-io.cn" source: hosted - version: "0.20.2" + version: "0.20.3" io: dependency: transitive description: @@ -416,6 +416,22 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.0.5" + jni: + dependency: transitive + description: + name: jni + sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + jni_flutter: + dependency: transitive + description: + name: jni_flutter + sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" js: dependency: transitive description: @@ -552,6 +568,30 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.9.1" + path_provider: + dependency: "direct main" + description: + name: path_provider + sha256: a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.6" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.3.1" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "6d13aece7b3f5c5a9731eaf553ff9dcbc2eff41087fd2df587fd0fed9a3eb0c4" + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.5.1" path_provider_linux: dependency: transitive description: @@ -910,5 +950,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.9.0 <4.0.0" - flutter: ">=3.35.0" + dart: ">=3.10.0 <4.0.0" + flutter: ">=3.38.0" diff --git a/pubspec.yaml b/pubspec.yaml index b877088..eb07b16 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -24,6 +24,7 @@ dependencies: fluttertoast: ^8.2.2 flutter_image_compress: ^2.4.0 awesome_dialog: ^3.3.0 + path_provider: ^2.1.1 dev_dependencies: flutter_test: