diff --git a/lib/common/widgets/dialog/export_import.dart b/lib/common/widgets/dialog/export_import.dart index 486a3b076..d88ff8101 100644 --- a/lib/common/widgets/dialog/export_import.dart +++ b/lib/common/widgets/dialog/export_import.dart @@ -117,27 +117,25 @@ Future importFromClipBoard( Future importFromLocalFile({ required FutureOr Function(T json) onImport, }) async { - final result = await FilePicker.pickFiles( + final result = await FilePicker.pickFile( type: .custom, allowedExtensions: const ['json', 'txt'], ); if (result != null) { - final path = result.files.first.path; - if (path != null) { - final data = await File(path).readAsString(); - final T json; - try { - json = jsonDecode(data); - } catch (e) { - SmartDialog.showToast('解析json失败:$e'); - return; - } - try { - await onImport(json); - SmartDialog.showToast('导入成功'); - } catch (e) { - SmartDialog.showToast('导入失败:$e'); - } + final path = result.xFile.path; + final data = await File(path).readAsString(); + final T json; + try { + json = jsonDecode(data); + } catch (e) { + SmartDialog.showToast('解析json失败:$e'); + return; + } + try { + await onImport(json); + SmartDialog.showToast('导入成功'); + } catch (e) { + SmartDialog.showToast('导入失败:$e'); } } } diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index 624819aae..33821b297 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -634,51 +634,49 @@ class HeaderControlState extends State onTap: () async { Get.back(); try { - final result = await FilePicker.pickFiles( + final result = await FilePicker.pickFile( type: .custom, allowedExtensions: const ['json', 'vtt', 'srt'], ); if (result != null) { - final file = result.files.single; + final file = result.xFile; final path = file.path; - if (path != null) { - final name = file.name; - final length = videoDetailCtr.subtitles.length; - if (name.endsWith('.json')) { - final file = File(path); - final stream = file.openRead().transform( - utf8.decoder, - ); - final buffer = StringBuffer(); - await for (final chunk in stream) { - if (!mounted) return; - buffer.write(chunk); - } - if (!mounted) return; - String sub = buffer.toString(); - sub = await compute( - VideoHttp.processList, - jsonDecode(sub)['body'], - ); - if (!mounted) return; - videoDetailCtr.vttSubtitles[length] = ( - isData: true, - id: sub, - ); - } else { - videoDetailCtr.vttSubtitles[length] = ( - isData: false, - id: path, - ); - } - videoDetailCtr.subtitles.add( - Subtitle( - lan: '', - lanDoc: name.split('.').firstOrNull ?? name, - ), + final name = file.name; + final length = videoDetailCtr.subtitles.length; + if (name.endsWith('.json')) { + final file = File(path); + final stream = file.openRead().transform( + utf8.decoder, + ); + final buffer = StringBuffer(); + await for (final chunk in stream) { + if (!mounted) return; + buffer.write(chunk); + } + if (!mounted) return; + String sub = buffer.toString(); + sub = await compute( + VideoHttp.processList, + jsonDecode(sub)['body'], + ); + if (!mounted) return; + videoDetailCtr.vttSubtitles[length] = ( + isData: true, + id: sub, + ); + } else { + videoDetailCtr.vttSubtitles[length] = ( + isData: false, + id: path, ); - await videoDetailCtr.setSubtitle(length + 1); } + videoDetailCtr.subtitles.add( + Subtitle( + lan: '', + lanDoc: name.split('.').firstOrNull ?? name, + ), + ); + await videoDetailCtr.setSubtitle(length + 1); } } catch (e) { SmartDialog.showToast('加载失败: $e'); diff --git a/lib/utils/image_utils.dart b/lib/utils/image_utils.dart index 3c4ed41ef..5e02d0f1f 100644 --- a/lib/utils/image_utils.dart +++ b/lib/utils/image_utils.dart @@ -320,6 +320,7 @@ abstract final class ImageUtils { final savePath = await FilePicker.saveFile( type: FileType.image, fileName: fileName, + bytes: Uint8List(0), ); if (savePath == null) { SmartDialog.showToast("取消保存"); @@ -357,6 +358,7 @@ abstract final class ImageUtils { final savePath = await FilePicker.saveFile( type: type, fileName: fileName, + bytes: Uint8List(0), ); if (savePath == null) { SmartDialog.showToast("取消保存"); diff --git a/lib/utils/storage_utils.dart b/lib/utils/storage_utils.dart index f65d1eff2..3c5b6353e 100644 --- a/lib/utils/storage_utils.dart +++ b/lib/utils/storage_utils.dart @@ -17,7 +17,7 @@ abstract final class StorageUtils { allowedExtensions: allowedExtensions, type: type, fileName: name, - bytes: PlatformUtils.isDesktop ? null : bytes, + bytes: PlatformUtils.isDesktop ? Uint8List(0) : bytes, ); if (path == null) { SmartDialog.showToast("取消保存"); diff --git a/pubspec.lock b/pubspec.lock index cf72669c3..778660df6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -498,10 +498,10 @@ packages: description: path: "." ref: dev - resolved-ref: "8cf6cfa7078aa69c2c7b08d9ad636a1040456852" + resolved-ref: c4672374956fa28d117ef7a55a6e708daddbf462 url: "https://github.com/bggRGjQaUbCoE/flutter_file_picker.git" source: git - version: "12.0.0-beta.3" + version: "12.0.0-beta.4" file_selector_linux: dependency: transitive description: @@ -725,10 +725,10 @@ packages: dependency: "direct main" description: name: flutter_volume_controller - sha256: "22edb0993ad03ecbc8d1164daeb5b39d798d409625db692675a86889403b1532" + sha256: "27b95004d8abd7c6b24a63e555d721ef5f958fbe54551246567b72321494c6c8" url: "https://pub.dev" source: hosted - version: "1.3.4" + version: "2.0.0" flutter_web_plugins: dependency: transitive description: flutter @@ -1102,7 +1102,7 @@ packages: description: path: media_kit ref: "version_1.2.5" - resolved-ref: "14c3ee41df4f51292b89eaf8f8c97420220fe136" + resolved-ref: "4f0f72e5bf21349bc251bf52761628faeae3f233" url: "https://github.com/My-Responsitories/media-kit.git" source: git version: "1.1.11" @@ -1111,7 +1111,7 @@ packages: description: path: "libs/android/media_kit_libs_android_video" ref: "version_1.2.5" - resolved-ref: "14c3ee41df4f51292b89eaf8f8c97420220fe136" + resolved-ref: "4f0f72e5bf21349bc251bf52761628faeae3f233" url: "https://github.com/My-Responsitories/media-kit.git" source: git version: "1.3.7" @@ -1145,7 +1145,7 @@ packages: description: path: "libs/universal/media_kit_libs_video" ref: "version_1.2.5" - resolved-ref: "14c3ee41df4f51292b89eaf8f8c97420220fe136" + resolved-ref: "4f0f72e5bf21349bc251bf52761628faeae3f233" url: "https://github.com/My-Responsitories/media-kit.git" source: git version: "1.0.5" @@ -1154,7 +1154,7 @@ packages: description: path: "libs/windows/media_kit_libs_windows_video" ref: "version_1.2.5" - resolved-ref: "14c3ee41df4f51292b89eaf8f8c97420220fe136" + resolved-ref: "4f0f72e5bf21349bc251bf52761628faeae3f233" url: "https://github.com/My-Responsitories/media-kit.git" source: git version: "1.0.10" @@ -1163,7 +1163,7 @@ packages: description: path: media_kit_native_event_loop ref: "version_1.2.5" - resolved-ref: "14c3ee41df4f51292b89eaf8f8c97420220fe136" + resolved-ref: "4f0f72e5bf21349bc251bf52761628faeae3f233" url: "https://github.com/My-Responsitories/media-kit.git" source: git version: "1.0.9" @@ -1172,7 +1172,7 @@ packages: description: path: media_kit_video ref: "version_1.2.5" - resolved-ref: "14c3ee41df4f51292b89eaf8f8c97420220fe136" + resolved-ref: "4f0f72e5bf21349bc251bf52761628faeae3f233" url: "https://github.com/My-Responsitories/media-kit.git" source: git version: "1.2.5" @@ -1229,10 +1229,10 @@ packages: dependency: transitive description: name: objective_c - sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52" + sha256: "02f4ff97ac95fa4abe561242eb033239e08e8903a46eaecf61b047761b89fe1f" url: "https://pub.dev" source: hosted - version: "9.3.0" + version: "9.4.0" octo_image: dependency: transitive description: @@ -1822,10 +1822,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "3bb000251e55d4a209aa0e2e563309dc9bb2befea2295fd0cec1f51760aac572" + sha256: "17bc677f0b301615530dd1d67e0a9828cafa2d0b6b6eae4cd3679b7eac4a273c" url: "https://pub.dev" source: hosted - version: "6.3.29" + version: "6.3.30" url_launcher_ios: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 2e320e357..446d99aa6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -94,7 +94,7 @@ dependencies: url: https://github.com/bggRGjQaUbCoE/flutter_sortable_wrap.git ref: master flutter_svg: ^2.0.14 - flutter_volume_controller: ^1.3.3 + flutter_volume_controller: ^2.0.0 font_awesome_flutter: git: url: https://github.com/bggRGjQaUbCoE/font_awesome_flutter.git @@ -168,6 +168,7 @@ dependency_overrides: url: https://github.com/bggRGjQaUbCoE/flutter_inappwebview.git path: flutter_inappwebview_android ref: v6.1.5 + flutter_volume_controller: ^2.0.0 media_kit: git: url: https://github.com/My-Responsitories/media-kit.git