diff --git a/lib/upload_image/upload_images_tool.dart b/lib/upload_image/upload_images_tool.dart index 39a7c2d..52c3c81 100644 --- a/lib/upload_image/upload_images_tool.dart +++ b/lib/upload_image/upload_images_tool.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter_common/upload_image/ossUtil.dart'; +import 'package:flutter_common/utils/asset_picker_localization.dart'; import 'package:flutter_image_compress/flutter_image_compress.dart'; import 'package:get/get.dart'; import 'package:image_picker/image_picker.dart'; @@ -34,22 +35,6 @@ class _ImageCompressionTarget { } class UploadImagesTool { - static String _assetPathNameBuilder(AssetPathEntity path) { - final locale = - Get.locale ?? WidgetsBinding.instance.platformDispatcher.locale; - if (locale.languageCode.toLowerCase() != 'zh') { - return path.name; - } - - const systemPathNameMap = { - 'Recent': '最近项目', - 'Camera': '相机', - 'Screenshots': '截屏', - 'Downloads': '下载', - }; - return systemPathNameMap[path.name] ?? path.name; - } - static uploadImagesTool({ String? oSSAccessKeyId, String? policy, @@ -312,7 +297,8 @@ class UploadImagesTool { pickerConfig: AssetPickerConfig( maxAssets: 1, requestType: RequestType.video, - pathNameBuilder: _assetPathNameBuilder, + pathNameBuilder: (AssetPathEntity path) => + AssetPickerLocalization.pathName(Get.context!, path), ), ); final File? video = await result?.first.file; @@ -335,7 +321,8 @@ class UploadImagesTool { Get.context!, pickerConfig: AssetPickerConfig( maxAssets: max ?? 50, - pathNameBuilder: _assetPathNameBuilder, + pathNameBuilder: (AssetPathEntity path) => + AssetPickerLocalization.pathName(Get.context!, path), ), ); diff --git a/lib/upload_video/video_batch_upload.dart b/lib/upload_video/video_batch_upload.dart index 076aaf2..9b79d66 100644 --- a/lib/upload_video/video_batch_upload.dart +++ b/lib/upload_video/video_batch_upload.dart @@ -1,4 +1,5 @@ export 'video_batch_upload_config.dart'; +export 'video_batch_upload_service.dart'; export 'video_batch_upload_task.dart'; export 'video_batch_uploader.dart'; export 'video_batch_upload_widgets.dart'; diff --git a/lib/upload_video/video_batch_upload_service.dart b/lib/upload_video/video_batch_upload_service.dart index 2d0cf39..8cc7f77 100644 --- a/lib/upload_video/video_batch_upload_service.dart +++ b/lib/upload_video/video_batch_upload_service.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/widgets.dart'; +import 'package:flutter_common/utils/asset_picker_localization.dart'; import 'package:wechat_assets_picker/wechat_assets_picker.dart'; import 'video_batch_upload_config.dart'; @@ -42,6 +43,8 @@ class VideoBatchUploadPicker { pickerConfig: AssetPickerConfig( maxAssets: maxAssets, requestType: _requestType(assetType), + pathNameBuilder: (AssetPathEntity path) => + AssetPickerLocalization.pathName(context, path), ), ); if (assets == null || assets.isEmpty) { diff --git a/lib/utils/asset_picker_localization.dart b/lib/utils/asset_picker_localization.dart new file mode 100644 index 0000000..fb43b81 --- /dev/null +++ b/lib/utils/asset_picker_localization.dart @@ -0,0 +1,32 @@ +import 'package:flutter/widgets.dart'; +import 'package:wechat_assets_picker/wechat_assets_picker.dart'; + +abstract final class AssetPickerLocalization { + static String pathName( + BuildContext context, + AssetPathEntity path, + ) { + final Locale locale = Localizations.maybeLocaleOf(context) ?? + WidgetsBinding.instance.platformDispatcher.locale; + if (locale.languageCode.toLowerCase() != 'zh') { + return path.name; + } + if (path.isAll) { + return '最近项目'; + } + + const Map systemPathNames = { + 'recent': '最近项目', + 'recents': '最近项目', + 'camera': '相机', + 'camera roll': '相机', + 'screenshot': '截屏', + 'screenshots': '截屏', + 'download': '下载', + 'downloads': '下载', + 'pictures': '图片', + 'movies': '视频', + }; + return systemPathNames[path.name.trim().toLowerCase()] ?? path.name; + } +}