Просмотр исходного кода

[feat]亲密度分析,截图回复-识图回复Tab,增加上传截图卡片

hezihao 7 месяцев назад
Родитель
Сommit
c6e6fc58e2

BIN
assets/images/icon_conversation_analysis_sample_image.webp


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

@@ -267,6 +267,12 @@
     <string name="intimacy_value_percent">%</string>
 
     <string name="intimacy_unlock_analyse">解锁分析</string>
+
+    <string name="intimacy_conversation_analysis">上传聊天记录</string>
+    <string name="intimacy_conversation_analysis_card_tip">
+        上传聊天截图 了解TA 的情感需求、真实想法
+    </string>
+
     <string name="intimacy_upload_screenshot">上传截图</string>
     <string name="intimacy_analyse_upload_screenshot_card_tip">
         上传朋友圈、小红书、抖音等社交平台截图帮你搭讪帮你撩
@@ -274,7 +280,8 @@
     <string name="intimacy_analyse_upload_screenshot_sample_title">温暖了四季</string>
     <string name="intimacy_analyse_upload_screenshot_sample_desc">祝我恢复单身生活 ✌</string>
     <string name="intimacy_analyse_upload_screenshot_sample_publish_time">刚刚</string>
-    <string name="intimacy_analyse_upload_screenshot_sample_image">示例图</string>
+
+    <string name="intimacy_analyse_sample_image">示例图</string>
 
     <string name="next_step">下一步</string>
     <string name="recently">最近</string>

+ 7 - 9
lib/module/intimacy_analyse/screenshot_reply/conversation_analysis/conversation_analysis_view.dart

@@ -1,12 +1,10 @@
 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 '../../../../resource/assets.gen.dart';
 import '../../../../resource/colors.gen.dart';
 import '../../../../resource/string.gen.dart';
-import '../../../../utils/string_format_util.dart';
 import '../../widget/step_card.dart';
 import 'conversation_analysis_controller.dart';
 
@@ -26,8 +24,8 @@ class ConversationAnalysisView
       children: [
         Column(
           children: [
-            // 上传截图例子卡片
-            _buildUploadScreenshotSampleCard(),
+            // 上传聊天记录例子卡片
+            _buildChatRecordSampleCard(),
           ],
         ),
         // 上传截图按钮
@@ -42,12 +40,12 @@ class ConversationAnalysisView
   }
 
   /// 上传截图例子卡片
-  Widget _buildUploadScreenshotSampleCard() {
+  Widget _buildChatRecordSampleCard() {
     return StepCard(
       bgImageProvider: Assets.images.bgIntimacyAnalyseUploadCard.provider(),
       stepLabel: "",
-      stepTitle: StringName.intimacyUploadScreenshot,
-      stepDesc: StringName.intimacyAnalyseUploadScreenshotCardTip,
+      stepTitle: StringName.intimacyConversationAnalysis,
+      stepDesc: StringName.intimacyConversationAnalysisCardTip,
       topIconWidget: Assets.images.iconIntimacyAnalyseUploadTop.image(
         height: 63.h,
         width: 103.w,
@@ -68,7 +66,7 @@ class ConversationAnalysisView
             ),
             child: Stack(
               children: [
-                Assets.images.iconUploadScreenshotSampleImage.image(
+                Assets.images.iconConversationAnalysisSampleImage.image(
                   width: 288.w,
                   height: 290.h,
                   // fit: BoxFit.cover,
@@ -83,7 +81,7 @@ class ConversationAnalysisView
                       borderRadius: BorderRadius.circular(9.r),
                     ),
                     child: Text(
-                      StringName.intimacyAnalyseUploadScreenshotSampleImage,
+                      StringName.intimacyAnalyseSampleImage,
                       style: TextStyle(
                         color: ColorName.white,
                         fontSize: 12.sp,

+ 5 - 1
lib/module/intimacy_analyse/screenshot_reply/scan_image_reply/scan_image_reply_controller.dart

@@ -3,4 +3,8 @@ import 'package:keyboard/base/base_controller.dart';
 
 /// 识图回复Controller
 @injectable
-class ScanImageReplyController extends BaseController {}
+class ScanImageReplyController extends BaseController {
+  /// 点击上传截图按钮
+  void clickUploadScreenshotBtn() {
+  }
+}

+ 128 - 4
lib/module/intimacy_analyse/screenshot_reply/scan_image_reply/scan_image_reply_view.dart

@@ -1,5 +1,11 @@
 import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:keyboard/base/base_view.dart';
+
+import '../../../../resource/assets.gen.dart';
+import '../../../../resource/colors.gen.dart';
+import '../../../../resource/string.gen.dart';
+import '../../widget/step_card.dart';
 import 'package:keyboard/module/intimacy_analyse/screenshot_reply/scan_image_reply/scan_image_reply_controller.dart';
 
 /// 识图回复Tab页
@@ -13,11 +19,129 @@ class ScanImageReplyView extends BaseView<ScanImageReplyController> {
 
   @override
   Widget buildBody(BuildContext context) {
-    return Center(
-      child: Text(
-        '识图回复',
-        style: TextStyle(fontSize: 20, color: Color(0xFF000000)),
+    return Stack(
+      children: [
+        Column(
+          children: [
+            // 上传截图例子卡片
+            _buildUploadScreenshotSampleCard(),
+          ],
+        ),
+        // 上传截图按钮
+        Positioned.fill(
+          child: Align(
+            alignment: Alignment.bottomCenter,
+            child: _buildBottomLayout(context),
+          ),
+        ),
+      ],
+    );
+  }
+
+  /// 上传截图例子卡片
+  Widget _buildUploadScreenshotSampleCard() {
+    return StepCard(
+      bgImageProvider: Assets.images.bgIntimacyAnalyseUploadCard.provider(),
+      stepLabel: "",
+      stepTitle: StringName.intimacyUploadScreenshot,
+      stepDesc: StringName.intimacyAnalyseUploadScreenshotCardTip,
+      topIconWidget: Assets.images.iconIntimacyAnalyseUploadTop.image(
+        height: 63.h,
+        width: 103.w,
+      ),
+      contentWidget: Column(
+        children: [
+          Container(
+            margin: EdgeInsets.only(left: 12.w, top: 17.h, 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: Stack(
+              children: [
+                Assets.images.iconUploadScreenshotSampleImage.image(
+                  width: 288.w,
+                  height: 290.h,
+                  // fit: BoxFit.cover,
+                ),
+                Positioned(
+                  right: 12.w,
+                  bottom: 12.w,
+                  child: Container(
+                    padding: EdgeInsets.all(6.w),
+                    decoration: BoxDecoration(
+                      color: ColorName.black28,
+                      borderRadius: BorderRadius.circular(9.r),
+                    ),
+                    child: Text(
+                      StringName.intimacyAnalyseSampleImage,
+                      style: TextStyle(
+                        color: ColorName.white,
+                        fontSize: 12.sp,
+                        fontWeight: FontWeight.w500,
+                      ),
+                    ),
+                  ),
+                ),
+              ],
+            ),
+          ),
+        ],
+      ),
+    );
+  }
+
+  /// 上传截图按钮
+  Widget _buildUploadScreenshotBtn() {
+    return GestureDetector(
+      onTap: () {
+        controller.clickUploadScreenshotBtn();
+      },
+      child: Container(
+        margin: EdgeInsets.symmetric(horizontal: 16.w),
+        padding: EdgeInsets.symmetric(vertical: 14.h),
+        width: double.maxFinite,
+        decoration: ShapeDecoration(
+          // 渐变背景
+          gradient: LinearGradient(
+            colors: [ColorName.purpleGradient3, ColorName.purpleGradient4],
+            begin: Alignment.centerLeft,
+            end: Alignment.centerRight,
+          ),
+          shape: RoundedRectangleBorder(
+            borderRadius: BorderRadius.circular(50.r),
+          ),
+        ),
+        child: Center(
+          child: Text(
+            StringName.intimacyUploadScreenshot,
+            style: TextStyle(
+              color: ColorName.white,
+              fontSize: 16.sp,
+              fontWeight: FontWeight.w500,
+            ),
+          ),
+        ),
       ),
     );
   }
+
+  /// 底部布局
+  Widget _buildBottomLayout(BuildContext context) {
+    return Column(
+      // 高度包裹内容
+      mainAxisSize: MainAxisSize.min,
+      crossAxisAlignment: CrossAxisAlignment.start,
+      children: [
+        // 上传截图按钮
+        _buildUploadScreenshotBtn(), SizedBox(height: 20.h),
+      ],
+    );
+  }
 }

+ 3 - 2
lib/module/intimacy_analyse/widget/step_card.dart

@@ -127,9 +127,10 @@ class StepCard extends StatelessWidget {
             margin: EdgeInsets.only(left: 12.w, right: 12.w),
             child: Text(
               desc,
-              // 单行,超过时显示省略号
+              // 超过时显示省略号
               overflow: TextOverflow.ellipsis,
-              maxLines: 1,
+              // 最多多少行
+              maxLines: 2,
               style: TextStyle(
                 fontSize: 12.sp,
                 fontWeight: FontWeight.w400,

+ 6 - 0
lib/resource/assets.gen.dart

@@ -361,6 +361,11 @@ class $AssetsImagesGen {
   AssetGenImage get iconCharacterVip =>
       const AssetGenImage('assets/images/icon_character_vip.webp');
 
+  /// File path: assets/images/icon_conversation_analysis_sample_image.webp
+  AssetGenImage get iconConversationAnalysisSampleImage => const AssetGenImage(
+    'assets/images/icon_conversation_analysis_sample_image.webp',
+  );
+
   /// File path: assets/images/icon_copy.webp
   AssetGenImage get iconCopy =>
       const AssetGenImage('assets/images/icon_copy.webp');
@@ -926,6 +931,7 @@ class $AssetsImagesGen {
     iconCharacterLock,
     iconCharacterMarket,
     iconCharacterVip,
+    iconConversationAnalysisSampleImage,
     iconCopy,
     iconCustomCharacterAddMarket,
     iconCustomDialogClose,

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

@@ -190,12 +190,14 @@ class StringName {
   static final String intimacyCurrentStage = 'intimacy_current_stage'.tr; // 目前阶段
   static final String intimacyValuePercent = 'intimacy_value_percent'.tr; // %
   static final String intimacyUnlockAnalyse = 'intimacy_unlock_analyse'.tr; // 解锁分析
+  static final String intimacyConversationAnalysis = 'intimacy_conversation_analysis'.tr; // 上传聊天记录
+  static final String intimacyConversationAnalysisCardTip = 'intimacy_conversation_analysis_card_tip'.tr; // 上传聊天截图 了解TA 的情感需求、真实想法
   static final String intimacyUploadScreenshot = 'intimacy_upload_screenshot'.tr; // 上传截图
   static final String intimacyAnalyseUploadScreenshotCardTip = 'intimacy_analyse_upload_screenshot_card_tip'.tr; // 上传朋友圈、小红书、抖音等社交平台截图帮你搭讪帮你撩
   static final String intimacyAnalyseUploadScreenshotSampleTitle = 'intimacy_analyse_upload_screenshot_sample_title'.tr; // 温暖了四季
   static final String intimacyAnalyseUploadScreenshotSampleDesc = 'intimacy_analyse_upload_screenshot_sample_desc'.tr; // 祝我恢复单身生活 ✌
   static final String intimacyAnalyseUploadScreenshotSamplePublishTime = 'intimacy_analyse_upload_screenshot_sample_publish_time'.tr; // 刚刚
-  static final String intimacyAnalyseUploadScreenshotSampleImage = 'intimacy_analyse_upload_screenshot_sample_image'.tr; // 示例图
+  static final String intimacyAnalyseSampleImage = 'intimacy_analyse_sample_image'.tr; // 示例图
   static final String nextStep = 'next_step'.tr; // 下一步
   static final String recently = 'recently'.tr; // 最近
 }
@@ -391,12 +393,14 @@ class StringMultiSource {
       'intimacy_current_stage': '目前阶段',
       'intimacy_value_percent': '%',
       'intimacy_unlock_analyse': '解锁分析',
+      'intimacy_conversation_analysis': '上传聊天记录',
+      'intimacy_conversation_analysis_card_tip': '上传聊天截图 了解TA 的情感需求、真实想法',
       'intimacy_upload_screenshot': '上传截图',
       'intimacy_analyse_upload_screenshot_card_tip': '上传朋友圈、小红书、抖音等社交平台截图帮你搭讪帮你撩',
       'intimacy_analyse_upload_screenshot_sample_title': '温暖了四季',
       'intimacy_analyse_upload_screenshot_sample_desc': '祝我恢复单身生活 ✌',
       'intimacy_analyse_upload_screenshot_sample_publish_time': '刚刚',
-      'intimacy_analyse_upload_screenshot_sample_image': '示例图',
+      'intimacy_analyse_sample_image': '示例图',
       'next_step': '下一步',
       'recently': '最近',
     },