Parcourir la source

[feat]配置wechat_assets_picker的相关参数

hezihao il y a 7 mois
Parent
commit
b2b2028961

+ 3 - 0
assets/string/base/string.xml

@@ -221,4 +221,7 @@
     <string name="intimacy_analyse_tab_report">亲密分析报告</string>
     <string name="intimacy_analyse_tab_screenshot_reply">截图回复</string>
 
+    <string name="next_step">下一步</string>
+    <string name="recently">最近</string>
+
 </resources>

+ 4 - 0
lib/resource/string.gen.dart

@@ -157,6 +157,8 @@ class StringName {
   static final String keyboardGuideTaReply3 = 'keyboard_guide_ta_reply3'.tr; // 我先去吃饭了,一会聊
   static final String intimacyAnalyseTabReport = 'intimacy_analyse_tab_report'.tr; // 亲密分析报告
   static final String intimacyAnalyseTabScreenshotReply = 'intimacy_analyse_tab_screenshot_reply'.tr; // 截图回复
+  static final String nextStep = 'next_step'.tr; // 下一步
+  static final String recently = 'recently'.tr; // 最近
 }
 class StringMultiSource {
   StringMultiSource._();
@@ -317,6 +319,8 @@ class StringMultiSource {
       'keyboard_guide_ta_reply3': '我先去吃饭了,一会聊',
       'intimacy_analyse_tab_report': '亲密分析报告',
       'intimacy_analyse_tab_screenshot_reply': '截图回复',
+      'next_step': '下一步',
+      'recently': '最近',
     },
   };
 }

+ 57 - 4
lib/utils/image_picker_util.dart

@@ -1,23 +1,76 @@
 import 'package:flutter/cupertino.dart';
 import 'package:wechat_assets_picker/wechat_assets_picker.dart';
 
+import '../resource/colors.gen.dart';
+import '../resource/string.gen.dart';
+
 /// 本地选择图片工具类
 class ImagePickerUtil {
+  static final Color _themeColor = ColorName.colorBrand;
+
   /// 选择图片
-  /// @param context 上下文
-  /// @param maxAssetsCount 最大选择数量
-  /// @param selectedAssets 已选择的图片列表
   static Future<void> pickImage(
     BuildContext context, {
     required int maxAssetsCount,
-    List<AssetEntity>? selectedAssets,
+    List<AssetEntity> selectedAssets = const [],
   }) async {
     await AssetPicker.pickAssets(
       context,
       pickerConfig: AssetPickerConfig(
+        // 最大选择数量
         maxAssets: maxAssetsCount,
+        // 已选择的图片列表
         selectedAssets: selectedAssets,
+        // 自定义按钮文字
+        textDelegate: const CustomChineseDelegate(),
+        // 主题
+        pickerTheme: AssetPicker.themeData(
+          // 主题色
+          _themeColor,
+          // 深色默认
+          light: false,
+        ),
+        // 设置为不能预览的模式
+        specialPickerType: SpecialPickerType.noPreview,
+        // 只能选取图片类型
+        requestType: RequestType.image,
+        // 关闭拽托选择
+        dragToSelect: false,
+        // 实现最近相册的名字显示
+        pathNameBuilder:
+            (AssetPathEntity path) => switch (path) {
+              final p when p.isAll => StringName.recently,
+              _ => path.name,
+            },
       ),
     );
   }
+
+  /// 跳转到图片预览
+  static Future<List<AssetEntity>> goImagePreview(
+    BuildContext context,
+    List<AssetEntity> previewAssets,
+    int index,
+  ) async {
+    final List<AssetEntity> result =
+        await AssetPickerViewer.pushToViewer(
+          context,
+          // 当前预览的索引位置
+          currentIndex: index,
+          // 资源列表
+          previewAssets: previewAssets,
+          // 主题色
+          themeData: AssetPicker.themeData(_themeColor),
+        ) ??
+        [];
+    return result;
+  }
+}
+
+/// 自定义按钮文字
+class CustomChineseDelegate extends AssetPickerTextDelegate {
+  const CustomChineseDelegate();
+
+  @override
+  String get confirm => StringName.nextStep;
 }