From 22eb54b61fdb506170445d416e236ca736abd752 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Mon, 1 Dec 2025 22:36:26 +0800 Subject: [PATCH] :bug: Fix file management do not support windows format --- ios/Podfile.lock | 17 +++++++++-------- lib/widgets/sites/file_management_section.dart | 9 +++++---- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 66ab61e9..ca9e14ef 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -231,7 +231,7 @@ PODS: - libwebp/sharpyuv (1.5.0) - libwebp/webp (1.5.0): - libwebp/sharpyuv - - livekit_client (2.5.3): + - livekit_client (2.5.4): - Flutter - flutter_webrtc - WebRTC-SDK (= 137.7151.04) @@ -249,13 +249,14 @@ PODS: - nanopb/encode (3.30910.0) - native_exif (0.0.1): - Flutter - - objective_c (0.0.1): - - Flutter - OrderedSet (6.0.3) - package_info_plus (0.4.5): - Flutter - pasteboard (0.0.1): - Flutter + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS - pointer_interceptor_ios (0.0.1): - Flutter - PromisesObjC (2.4.0) @@ -347,9 +348,9 @@ DEPENDENCIES: - media_kit_libs_ios_video (from `.symlinks/plugins/media_kit_libs_ios_video/ios`) - media_kit_video (from `.symlinks/plugins/media_kit_video/ios`) - native_exif (from `.symlinks/plugins/native_exif/ios`) - - objective_c (from `.symlinks/plugins/objective_c/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - pasteboard (from `.symlinks/plugins/pasteboard/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - pointer_interceptor_ios (from `.symlinks/plugins/pointer_interceptor_ios/ios`) - protocol_handler_ios (from `.symlinks/plugins/protocol_handler_ios/ios`) - receive_sharing_intent (from `.symlinks/plugins/receive_sharing_intent/ios`) @@ -451,12 +452,12 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/media_kit_video/ios" native_exif: :path: ".symlinks/plugins/native_exif/ios" - objective_c: - :path: ".symlinks/plugins/objective_c/ios" package_info_plus: :path: ".symlinks/plugins/package_info_plus/ios" pasteboard: :path: ".symlinks/plugins/pasteboard/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" pointer_interceptor_ios: :path: ".symlinks/plugins/pointer_interceptor_ios/ios" protocol_handler_ios: @@ -528,16 +529,16 @@ SPEC CHECKSUMS: Kingfisher: 23d18f54677d973b713e54ce6a8f5eef6e7056ba KingfisherWebP: 38b9721821947f547afb78f933f75f4f9e0ae402 libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 - livekit_client: 86c8af579274e4b7a215185a8080db2d4e176f40 + livekit_client: 53ca658779b78710fb458cccee28b53a13356c15 local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854 media_kit_video: 1746e198cb697d1ffb734b1d05ec429d1fcd1474 nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 native_exif: 0eb73d3d5b3ca892719228df8d2d1b13d1ae396c - objective_c: 89e720c30d716b036faf9c9684022048eee1eee2 OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 pasteboard: 49088aeb6119d51f976a421db60d8e1ab079b63c + path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880 pointer_interceptor_ios: da06a662d5bfd329602b45b2ab41bc0fb5fdb0f0 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 diff --git a/lib/widgets/sites/file_management_section.dart b/lib/widgets/sites/file_management_section.dart index 0f5aa02a..7cba41c1 100644 --- a/lib/widgets/sites/file_management_section.dart +++ b/lib/widgets/sites/file_management_section.dart @@ -11,6 +11,7 @@ import 'package:island/widgets/alert.dart'; import 'package:island/widgets/sites/file_upload_dialog.dart'; import 'package:island/widgets/sites/file_item.dart'; import 'package:material_symbols_icons/symbols.dart'; +import 'package:path/path.dart' as p; class FileManagementSection extends HookConsumerWidget { final SnPublicationSite site; @@ -293,10 +294,10 @@ class FileManagementSection extends HookConsumerWidget { try { await for (final entity in Directory(dirPath).list(recursive: true)) { if (entity is File) { - String relativePath = entity.path.substring(dirPath.length); - if (relativePath.startsWith('/')) { - relativePath = relativePath.substring(1); - } + String relativePath = p.relative(entity.path, from: dirPath); + // Normalize to forward slashes for consistency (e.g. for API uploads) + relativePath = relativePath.replaceAll(r'\', '/'); + if (relativePath.isEmpty) continue; results.add({ 'file': File(entity.path),