diff --git a/lib/data/repositories/file_repository.dart b/lib/data/repositories/file_repository.dart index d17813e..a55f4af 100644 --- a/lib/data/repositories/file_repository.dart +++ b/lib/data/repositories/file_repository.dart @@ -6,7 +6,7 @@ import 'package:problem_check_system/core/extensions/http_response_extension.dar import 'package:problem_check_system/core/utils/constants/api_endpoints.dart'; import 'package:problem_check_system/data/providers/http_provider.dart'; -class FileRepository { +class FileRepository extends GetxService { final HttpProvider _httpProvider = Get.find(); /// @param imageFilePath 要上传的本地图片文件。 @@ -47,7 +47,8 @@ class FileRepository { final Map data = response.data; // 假设服务器返回的图片 URL 字段名为 'url' - String imageUrl = data['fileName']; + String imageUrl = + "${ApiEndpoints.baseUrl}${ApiEndpoints.postUploadFile}/${data['objectName']}"; return imageUrl; } else { diff --git a/lib/data/repositories/image_repository_impl.dart b/lib/data/repositories/image_repository_impl.dart index 6964379..64e6896 100644 --- a/lib/data/repositories/image_repository_impl.dart +++ b/lib/data/repositories/image_repository_impl.dart @@ -7,7 +7,7 @@ import 'package:path/path.dart' as path; import 'package:problem_check_system/data/providers/http_provider.dart'; import 'package:problem_check_system/data/repositories/image_repository.dart'; -class ImageRepositoryImpl implements ImageRepository { +class ImageRepositoryImpl extends GetxService implements ImageRepository { final HttpProvider httpProvider; ImageRepositoryImpl({required this.httpProvider}); diff --git a/lib/modules/problem/controllers/problem_controller.dart b/lib/modules/problem/controllers/problem_controller.dart index ed3f412..6b30320 100644 --- a/lib/modules/problem/controllers/problem_controller.dart +++ b/lib/modules/problem/controllers/problem_controller.dart @@ -370,21 +370,23 @@ class ProblemController extends GetxController // 4. 处理服务器响应 if (response.isSuccess) { - final problem = Problem.fromJson(response.data); - // 更新图片状态(仅对创建和更新操作) - final updatedImageMetadata = - problem.syncStatus != ProblemSyncStatus.pendingDelete - ? _updateImageMetadata(problem.imageUrls, remoteUrls) - : problem.imageUrls; - - Get.log(problem.lastModifiedTime.toUtc().toIso8601String()); - // 返回同步完成的对象,操作类型重置为none - return problem.copyWith( - syncStatus: problem.syncStatus != ProblemSyncStatus.pendingDelete - ? ProblemSyncStatus.synced - : ProblemSyncStatus.untracked, // 同步完成,重置为none - imageUrls: updatedImageMetadata, - ); + if (problem.syncStatus != ProblemSyncStatus.pendingDelete) { + final serverProblem = ServerProblem.fromJson(response.data); + // 更新图片状态(仅对创建和更新操作) + final updatedImageMetadata = _updateImageMetadata( + problem.imageUrls, + remoteUrls, + ); + // 返回同步完成的对象,操作类型重置为none + return problem.copyWith( + syncStatus: ProblemSyncStatus.synced, + imageUrls: updatedImageMetadata, + lastModifiedTime: serverProblem.lastModificationTime, + ); + } else { + // 删除逻辑 + return problem.copyWith(syncStatus: ProblemSyncStatus.untracked); + } } else { throw Exception('操作失败,状态码: ${response.statusCode}'); } diff --git a/lib/modules/problem/controllers/problem_form_controller.dart b/lib/modules/problem/controllers/problem_form_controller.dart index ea7e44f..709c695 100644 --- a/lib/modules/problem/controllers/problem_form_controller.dart +++ b/lib/modules/problem/controllers/problem_form_controller.dart @@ -10,6 +10,7 @@ import 'dart:io'; import 'package:problem_check_system/data/models/problem_model.dart'; import 'package:problem_check_system/data/models/problem_sync_status.dart'; import 'package:problem_check_system/data/repositories/problem_repository.dart'; +import 'package:uuid/uuid.dart'; class ProblemFormController extends GetxController { final Problem? problem; @@ -184,8 +185,7 @@ class ProblemFormController extends GetxController { for (var image in selectedImages) { try { - final String fileName = - 'problem_${DateTime.now().millisecondsSinceEpoch}_${path.basename(image.name)}'; + final String fileName = '${Uuid().v4()}_${path.basename(image.name)}'; final String imagePath = '${imagesDir.path}/$fileName'; final ImageMetadata imageData = ImageMetadata( localPath: imagePath, diff --git a/lib/modules/problem/views/problem_list_page.dart b/lib/modules/problem/views/problem_list_page.dart index ac75db2..0c3bc09 100644 --- a/lib/modules/problem/views/problem_list_page.dart +++ b/lib/modules/problem/views/problem_list_page.dart @@ -113,6 +113,10 @@ class ProblemListPage extends GetView { } Future _showDeleteConfirmationDialog(Problem problem) async { + // 确保在返回前关闭可能存在的snackbar + if (Get.isSnackbarOpen) { + Get.closeCurrentSnackbar(); + } return await Get.bottomSheet( Container( padding: const EdgeInsets.symmetric(horizontal: 16.0),