Parcourir la source

[feat]亲密度分析,截图回复-对话分析Tab,增加TA现在的需求卡片

hezihao il y a 7 mois
Parent
commit
ca7b32e4a2

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

@@ -283,6 +283,7 @@
 
     <string name="intimacy_analyse_sample_image">示例图</string>
     <string name="intimacy_analyse_look_analyse">查看分析</string>
+    <string name="intimacy_analyse_ta_demand">TA现在的需求</string>
 
     <string name="next_step">下一步</string>
     <string name="recently">最近</string>

+ 24 - 0
lib/module/intimacy_analyse/screenshot_reply/conversation_analysis/conversation_analysis_controller.dart

@@ -14,6 +14,9 @@ class ConversationAnalysisController extends BaseController {
   /// 是否是上传页
   Rx<bool> isUploadPage = false.obs;
 
+  /// 报告是否已经生成
+  Rx<bool> hasReport = true.obs;
+
   /// 是否已解锁
   Rx<bool> isUnlock = false.obs;
 
@@ -21,6 +24,27 @@ class ConversationAnalysisController extends BaseController {
   RxList<OptionSelectConfig> optionSelectConfigList =
       <OptionSelectConfig>[].obs;
 
+  /// 报告数据
+  RxString reportData =
+      '''
+  **性格匹配度**
+
+  ● 互补型:一方外向活泼,另一方沉稳内敛,形成动态平衡。
+  ● 相似型:三观一致,兴趣重叠,减少摩擦但需警惕新鲜感流失。
+  ● 关键结论:差异是火花的来源,但核心价值观需一致(如家庭观、金钱观)。
+
+  **沟通模式分析**
+
+  ● 语言风格:幽默调侃型 vs 理性分析型 → 需找到共同表达方式。
+  ● 冲突解决:回避型 vs 直面型 → 建议建立“冷静-沟通”机制。
+  ● 情感需求:一方需要高频互动,另一方偏好独立空间 → 需协商平衡点。
+
+  **爱情语言测试**
+
+  ● 根据盖瑞·查普曼的“五种爱之语”理论,分析双方的情感表达偏好:
+  ● 你的主要爱语:肯定的言辞(如情话、鼓励)
+  '''.obs;
+
   @override
   void onReady() {
     super.onReady();

+ 136 - 0
lib/module/intimacy_analyse/screenshot_reply/conversation_analysis/conversation_analysis_view.dart

@@ -2,12 +2,14 @@ import 'package:flutter/material.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart';
 import 'package:keyboard/base/base_view.dart';
+import 'package:keyboard/widget/markdown/markdown_viewer.dart';
 
 import '../../../../data/bean/option_select_config.dart';
 import '../../../../data/bean/option_select_item.dart';
 import '../../../../resource/assets.gen.dart';
 import '../../../../resource/colors.gen.dart';
 import '../../../../resource/string.gen.dart';
+import '../../intimacy_analyse_upload/widget/upload_nine_grid.dart';
 import '../../widget/option_select_widget.dart';
 import '../../widget/step/upload_step_card.dart';
 import '../../widget/step_card.dart';
@@ -46,6 +48,7 @@ class ConversationAnalysisView
   /// 内容列表
   Widget _buildContentList() {
     Widget contentWidget;
+    // 上传页
     if (controller.isUploadPage.value) {
       contentWidget = Column(
         children: [
@@ -57,6 +60,19 @@ class ConversationAnalysisView
           SizedBox(height: 90.h),
         ],
       );
+    } else if (controller.hasReport.value) {
+      // 已出结果
+      contentWidget = Column(
+        children: [
+          // 分析结果卡片
+          _buildAnalysisResultCard(),
+          SizedBox(height: 12.h),
+          // 分析结果Markdown卡片
+          _buildMarkdownAnalysisResultCard(),
+          // 距离底部有一定间距
+          SizedBox(height: 90.h),
+        ],
+      );
     } else {
       // 例子列表
       contentWidget = Column(
@@ -129,6 +145,126 @@ class ConversationAnalysisView
     );
   }
 
+  /// 分析结果卡片
+  Widget _buildAnalysisResultCard() {
+    return StepCard(
+      bgImageProvider: Assets.images.bgIntimacyAnalyseUploadCard.provider(),
+      stepTitle: StringName.intimacyAnalyseAnalysisResult,
+      topIconWidget: Assets.images.iconIntimacyAnalysisResultTop.image(
+        height: 63.h,
+        width: 103.w,
+      ),
+      contentWidget: Column(
+        children: [
+          // 图片九宫格
+          Container(
+            margin: EdgeInsets.only(left: 12.w, right: 12.w),
+            padding: EdgeInsets.only(
+              left: 12.w,
+              top: 12.h,
+              right: 12.w,
+              bottom: 12.h,
+            ),
+            decoration: BoxDecoration(
+              color: ColorName.white,
+              borderRadius: BorderRadius.circular(16.r),
+            ),
+            child: UploadNineGrid(
+              mode: Mode.preview,
+              imageSrcList: ["", "", "", "", "", "", ""],
+              maxCount: 9,
+              spacing: 8.0,
+            ),
+          ),
+          SizedBox(height: 10.h),
+        ],
+      ),
+    );
+  }
+
+  /// 分析结果,Markdown文档卡片
+  Widget _buildMarkdownAnalysisResultCard() {
+    return Container(
+      width: double.maxFinite,
+      margin: EdgeInsets.only(left: 14.w, right: 14.w),
+      // 圆角背景
+      decoration: BoxDecoration(
+        // 渐变背景
+        gradient: LinearGradient(
+          colors: [
+            ColorName.bgIntimacyRelationColor1,
+            ColorName.bgIntimacyRelationColor2,
+          ],
+          begin: Alignment.centerLeft,
+          end: Alignment.centerRight,
+        ),
+        shape: BoxShape.rectangle,
+        border: Border.all(color: ColorName.white80, width: 1.w),
+        borderRadius: BorderRadius.all(Radius.circular(23.r)),
+      ),
+      child: Column(
+        // 左对齐
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          // 标题
+          Container(
+            width: double.maxFinite,
+            height: 20.h,
+            margin: EdgeInsets.only(top: 16.h),
+            child: Stack(
+              clipBehavior: Clip.none,
+              children: [
+                // 底部的横线
+                Positioned(
+                  left: 15.w,
+                  bottom: 0,
+                  child: Container(
+                    width: 96.w,
+                    height: 7.h,
+                    color: Color(0xFFCEB6FF),
+                  ),
+                ),
+                Positioned(
+                  left: 0,
+                  bottom: -2.h,
+                  child: Container(
+                    margin: EdgeInsets.only(left: 14.w, top: 16.h),
+                    child: Text(
+                      StringName.intimacyAnalyseTaDemand,
+                      style: TextStyle(
+                        color: ColorName.black80,
+                        fontSize: 16.sp,
+                        fontWeight: FontWeight.w700,
+                      ),
+                    ),
+                  ),
+                ),
+              ],
+            ),
+          ),
+          // Markdown内容
+          Container(
+            margin: EdgeInsets.only(
+              left: 12.w,
+              top: 14.h,
+              right: 12.w,
+              bottom: 12.h,
+            ),
+            // 圆角背景
+            decoration: BoxDecoration(
+              color: ColorName.white,
+              borderRadius: BorderRadius.circular(20.r),
+            ),
+            child: MarkdownViewer(
+              content: controller.reportData.value,
+              enableContentScroll: false,
+            ),
+          ),
+        ],
+      ),
+    );
+  }
+
   /// 上传截图例子卡片
   Widget _buildChatRecordSampleCard() {
     return StepCard(

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

@@ -199,6 +199,7 @@ class StringName {
   static final String intimacyAnalyseUploadScreenshotSamplePublishTime = 'intimacy_analyse_upload_screenshot_sample_publish_time'.tr; // 刚刚
   static final String intimacyAnalyseSampleImage = 'intimacy_analyse_sample_image'.tr; // 示例图
   static final String intimacyAnalyseLookAnalyse = 'intimacy_analyse_look_analyse'.tr; // 查看分析
+  static final String intimacyAnalyseTaDemand = 'intimacy_analyse_ta_demand'.tr; // TA现在的需求
   static final String nextStep = 'next_step'.tr; // 下一步
   static final String recently = 'recently'.tr; // 最近
   static final String addHobbies = 'add_hobbies'.tr; // 添加爱好
@@ -405,6 +406,7 @@ class StringMultiSource {
       'intimacy_analyse_upload_screenshot_sample_publish_time': '刚刚',
       'intimacy_analyse_sample_image': '示例图',
       'intimacy_analyse_look_analyse': '查看分析',
+      'intimacy_analyse_ta_demand': 'TA现在的需求',
       'next_step': '下一步',
       'recently': '最近',
       'add_hobbies': '添加爱好',