|
@@ -1,17 +1,15 @@
|
|
|
|
|
+import 'package:dotted_border/dotted_border.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
import 'package:get/get.dart';
|
|
import 'package:get/get.dart';
|
|
|
import 'package:keyboard/base/base_page.dart';
|
|
import 'package:keyboard/base/base_page.dart';
|
|
|
|
|
+import 'package:keyboard/data/bean/option_select_config.dart';
|
|
|
|
|
+import 'package:keyboard/data/bean/option_select_item.dart';
|
|
|
import 'package:keyboard/module/intimacy_analyse/intimacy_analyse_upload/popup/ai_model_select_popup.dart';
|
|
import 'package:keyboard/module/intimacy_analyse/intimacy_analyse_upload/popup/ai_model_select_popup.dart';
|
|
|
-import 'package:keyboard/module/intimacy_analyse/intimacy_analyse_upload/widget/step_label_widget.dart';
|
|
|
|
|
-import 'package:keyboard/module/intimacy_analyse/intimacy_analyse_upload/widget/upload_add_widget.dart';
|
|
|
|
|
-import 'package:keyboard/module/intimacy_analyse/intimacy_analyse_upload/widget/upload_item_widget.dart';
|
|
|
|
|
import 'package:keyboard/module/intimacy_analyse/intimacy_analyse_upload/widget/upload_nine_grid.dart';
|
|
import 'package:keyboard/module/intimacy_analyse/intimacy_analyse_upload/widget/upload_nine_grid.dart';
|
|
|
import 'package:keyboard/resource/colors.gen.dart';
|
|
import 'package:keyboard/resource/colors.gen.dart';
|
|
|
import 'package:keyboard/resource/string.gen.dart';
|
|
import 'package:keyboard/resource/string.gen.dart';
|
|
|
-import 'package:sprintf/sprintf.dart';
|
|
|
|
|
import 'package:wechat_assets_picker/wechat_assets_picker.dart';
|
|
import 'package:wechat_assets_picker/wechat_assets_picker.dart';
|
|
|
-
|
|
|
|
|
import '../../../resource/assets.gen.dart';
|
|
import '../../../resource/assets.gen.dart';
|
|
|
import '../../../router/app_page_arguments.dart';
|
|
import '../../../router/app_page_arguments.dart';
|
|
|
import '../../../router/app_pages.dart';
|
|
import '../../../router/app_pages.dart';
|
|
@@ -19,6 +17,7 @@ import '../../../utils/string_format_util.dart';
|
|
|
import '../../../widget/actionbtn/action_btn.dart';
|
|
import '../../../widget/actionbtn/action_btn.dart';
|
|
|
import '../../../widget/gradient_text.dart';
|
|
import '../../../widget/gradient_text.dart';
|
|
|
import '../widget/intimacy_user_widget.dart';
|
|
import '../widget/intimacy_user_widget.dart';
|
|
|
|
|
+import '../widget/option_select_widget.dart';
|
|
|
import '../widget/step_card.dart';
|
|
import '../widget/step_card.dart';
|
|
|
import 'intimacy_analyse_upload_controller.dart';
|
|
import 'intimacy_analyse_upload_controller.dart';
|
|
|
|
|
|
|
@@ -183,7 +182,6 @@ class IntimacyAnalyseUploadPage
|
|
|
stepDesc: StringName.intimacyAnalysePredictionDirectionCardTip,
|
|
stepDesc: StringName.intimacyAnalysePredictionDirectionCardTip,
|
|
|
contentWidget: Column(
|
|
contentWidget: Column(
|
|
|
children: [
|
|
children: [
|
|
|
- // 九宫格
|
|
|
|
|
Container(
|
|
Container(
|
|
|
margin: EdgeInsets.only(left: 12.w, right: 12.w),
|
|
margin: EdgeInsets.only(left: 12.w, right: 12.w),
|
|
|
padding: EdgeInsets.only(
|
|
padding: EdgeInsets.only(
|
|
@@ -196,26 +194,96 @@ class IntimacyAnalyseUploadPage
|
|
|
color: ColorName.white,
|
|
color: ColorName.white,
|
|
|
borderRadius: BorderRadius.circular(16.r),
|
|
borderRadius: BorderRadius.circular(16.r),
|
|
|
),
|
|
),
|
|
|
- child: UploadNineGrid(
|
|
|
|
|
- mode: Mode.preview,
|
|
|
|
|
- imageSrcList: [
|
|
|
|
|
- "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",
|
|
|
|
|
- "",
|
|
|
|
|
- "",
|
|
|
|
|
- "",
|
|
|
|
|
- "",
|
|
|
|
|
- "",
|
|
|
|
|
- "",
|
|
|
|
|
|
|
+ child: Obx(() {
|
|
|
|
|
+ return Column(
|
|
|
|
|
+ children: [
|
|
|
|
|
+ // 添加预测方向按钮
|
|
|
|
|
+ _buildAddDirectionBtn(),
|
|
|
|
|
+ SizedBox(height: 22.h),
|
|
|
|
|
+ // 添加选项行
|
|
|
|
|
+ for (var optionConfig
|
|
|
|
|
+ in controller.directionOptionSelectConfigList)
|
|
|
|
|
+ _buildOptionRow(optionConfig),
|
|
|
|
|
+ ],
|
|
|
|
|
+ );
|
|
|
|
|
+ }),
|
|
|
|
|
+ ),
|
|
|
|
|
+ ],
|
|
|
|
|
+ ),
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /// 添加预测方向按钮
|
|
|
|
|
+ Widget _buildAddDirectionBtn() {
|
|
|
|
|
+ return Container(
|
|
|
|
|
+ // 左侧对齐
|
|
|
|
|
+ alignment: Alignment.centerLeft,
|
|
|
|
|
+ child: GestureDetector(
|
|
|
|
|
+ onTap: () {
|
|
|
|
|
+ controller.addDirection();
|
|
|
|
|
+ },
|
|
|
|
|
+ child: DottedBorder(
|
|
|
|
|
+ // 虚线颜色
|
|
|
|
|
+ color: ColorName.bgAddPredictionDirection,
|
|
|
|
|
+ // 虚线密集程度
|
|
|
|
|
+ dashPattern: [5, 3],
|
|
|
|
|
+ // 线条宽度
|
|
|
|
|
+ strokeWidth: 1.0.w,
|
|
|
|
|
+ // 圆角矩形,要使用 RRect 类型,才能有效
|
|
|
|
|
+ borderType: BorderType.RRect,
|
|
|
|
|
+ // 圆角半径
|
|
|
|
|
+ radius: Radius.circular(31.r),
|
|
|
|
|
+ child: Container(
|
|
|
|
|
+ padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 6.h),
|
|
|
|
|
+ child: Row(
|
|
|
|
|
+ // 包裹内容
|
|
|
|
|
+ mainAxisSize: MainAxisSize.min,
|
|
|
|
|
+ // 文字和图标都居中
|
|
|
|
|
+ mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
|
+ children: [
|
|
|
|
|
+ // 图标
|
|
|
|
|
+ Assets.images.iconAddPredictionDirection.image(
|
|
|
|
|
+ width: 18.w,
|
|
|
|
|
+ height: 18.w,
|
|
|
|
|
+ ),
|
|
|
|
|
+ SizedBox(width: 2.w),
|
|
|
|
|
+ // 文字
|
|
|
|
|
+ Text(
|
|
|
|
|
+ StringName.intimacyAnalyseAddPredictionDirection,
|
|
|
|
|
+ style: TextStyle(
|
|
|
|
|
+ color: ColorName.uploadAddText,
|
|
|
|
|
+ fontSize: 14.sp,
|
|
|
|
|
+ fontWeight: FontWeight.w400,
|
|
|
|
|
+ ),
|
|
|
|
|
+ ),
|
|
|
],
|
|
],
|
|
|
- maxCount: 9,
|
|
|
|
|
- spacing: 8.0,
|
|
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|
|
|
- ],
|
|
|
|
|
|
|
+ ),
|
|
|
),
|
|
),
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /// 构建一行选择选项行
|
|
|
|
|
+ Widget _buildOptionRow(OptionSelectConfig config) {
|
|
|
|
|
+ return Column(
|
|
|
|
|
+ children: [
|
|
|
|
|
+ // 选择项
|
|
|
|
|
+ OptionSelectWidget(
|
|
|
|
|
+ optionSelect: config,
|
|
|
|
|
+ optionSelectCallback: (
|
|
|
|
|
+ OptionSelectConfig rowConfig,
|
|
|
|
|
+ OptionSelectItem optionItem,
|
|
|
|
|
+ ) {
|
|
|
|
|
+ controller.selectDirectionOption(rowConfig, optionItem);
|
|
|
|
|
+ },
|
|
|
|
|
+ ),
|
|
|
|
|
+ SizedBox(height: 20.h),
|
|
|
|
|
+ ],
|
|
|
|
|
+ );
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/// 推荐的亲密关系
|
|
/// 推荐的亲密关系
|
|
|
Widget _buildRecommendIntimacy() {
|
|
Widget _buildRecommendIntimacy() {
|
|
|
return Container(
|
|
return Container(
|
|
@@ -438,7 +506,7 @@ class IntimacyAnalyseUploadPage
|
|
|
_buildUploadStepCard(),
|
|
_buildUploadStepCard(),
|
|
|
// 预测方向卡片
|
|
// 预测方向卡片
|
|
|
_buildPredictionDirectionStepCard(),
|
|
_buildPredictionDirectionStepCard(),
|
|
|
- SizedBox(height: 50.h),
|
|
|
|
|
|
|
+ SizedBox(height: 80.h),
|
|
|
],
|
|
],
|
|
|
),
|
|
),
|
|
|
),
|
|
),
|