Преглед на файлове

[feat]亲密度分析,识图回复,抽取回复语气列表组件

hezihao преди 6 месеца
родител
ревизия
8af9e90574

+ 7 - 26
lib/module/intimacy_analyse/screenshot_reply/scan_image_reply/scan_image_reply_view.dart

@@ -4,6 +4,7 @@ import 'package:get/get.dart';
 import 'package:keyboard/base/base_view.dart';
 import 'package:keyboard/data/bean/upload_info.dart';
 import 'package:keyboard/module/intimacy_analyse/intimacy_analyse_upload/widget/upload_nine_grid.dart';
+import 'package:keyboard/module/intimacy_analyse/screenshot_reply/scan_image_reply/widget/reply_tone_option_list.dart';
 import 'package:keyboard/module/intimacy_analyse/widget/creating_loading_widget.dart';
 import '../../../../data/bean/image_viewer_item.dart';
 import '../../../../data/bean/option_select_config.dart';
@@ -287,13 +288,12 @@ class ScanImageReplyView extends BaseView<ScanImageReplyController> {
                 color: ColorName.white,
                 borderRadius: BorderRadius.circular(16.r),
               ),
-              child: Column(
-                children: [
-                  // 添加选项行
-                  for (var optionConfig
-                      in controller.replyToneOptionSelectConfigList)
-                    _buildOptionRow(optionConfig),
-                ],
+              child: ReplyToneOptionList(
+                replyToneOptionSelectConfigList:
+                    controller.replyToneOptionSelectConfigList.value,
+                onSelectOpenCallback: (rowConfig, optionItem) {
+                  controller.selectReplyToneOption(rowConfig, optionItem);
+                },
               ),
             ),
           ],
@@ -518,25 +518,6 @@ class ScanImageReplyView extends BaseView<ScanImageReplyController> {
     );
   }
 
-  /// 构建一行选择选项行
-  Widget _buildOptionRow(OptionSelectConfig config) {
-    return Column(
-      children: [
-        // 选择项
-        OptionSelectWidget(
-          optionSelect: config,
-          optionSelectCallback: (
-            OptionSelectConfig rowConfig,
-            OptionSelectItem optionItem,
-          ) {
-            controller.selectReplyToneOption(rowConfig, optionItem);
-          },
-        ),
-        SizedBox(height: 20.h),
-      ],
-    );
-  }
-
   /// 上传截图按钮
   Widget _buildUploadScreenshotBtn(BuildContext context) {
     return Container(

+ 55 - 0
lib/module/intimacy_analyse/screenshot_reply/scan_image_reply/widget/reply_tone_option_list.dart

@@ -0,0 +1,55 @@
+import 'package:flutter/cupertino.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+
+import '../../../../../data/bean/option_select_config.dart';
+import '../../../../../data/bean/option_select_item.dart';
+import '../../../widget/option_select_widget.dart';
+
+/// 选择时回调
+typedef OnSelectOpenCallback =
+    void Function(OptionSelectConfig rowConfig, OptionSelectItem optionItem);
+
+/// 回复语气选项列表
+class ReplyToneOptionList extends StatelessWidget {
+  /// 回复语气选项列表
+  final List<OptionSelectConfig> replyToneOptionSelectConfigList;
+
+  /// 选择回调
+  final OnSelectOpenCallback onSelectOpenCallback;
+
+  const ReplyToneOptionList({
+    super.key,
+    required this.replyToneOptionSelectConfigList,
+    required this.onSelectOpenCallback,
+  });
+
+  @override
+  Widget build(BuildContext context) {
+    return Column(
+      children: [
+        // 添加选项行
+        for (var optionConfig in replyToneOptionSelectConfigList)
+          _buildOptionRow(optionConfig),
+      ],
+    );
+  }
+
+  /// 构建一行选择选项行
+  Widget _buildOptionRow(OptionSelectConfig config) {
+    return Column(
+      children: [
+        // 选择项
+        OptionSelectWidget(
+          optionSelect: config,
+          optionSelectCallback: (
+            OptionSelectConfig rowConfig,
+            OptionSelectItem optionItem,
+          ) {
+            onSelectOpenCallback(rowConfig, optionItem);
+          },
+        ),
+        SizedBox(height: 20.h),
+      ],
+    );
+  }
+}