feat(picker): 统一安卓相册名称本地化

This commit is contained in:
2026-07-06 16:25:07 +08:00
parent ad0d329b3b
commit cf2826c1cf
4 changed files with 41 additions and 18 deletions
+5 -18
View File
@@ -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),
),
);
+1
View File
@@ -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';
@@ -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) {
+32
View File
@@ -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<String, String> systemPathNames = <String, String>{
'recent': '最近项目',
'recents': '最近项目',
'camera': '相机',
'camera roll': '相机',
'screenshot': '截屏',
'screenshots': '截屏',
'download': '下载',
'downloads': '下载',
'pictures': '图片',
'movies': '视频',
};
return systemPathNames[path.name.trim().toLowerCase()] ?? path.name;
}
}