upload_step_card.dart 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter_screenutil/flutter_screenutil.dart';
  3. import '../../../../data/bean/upload_info.dart';
  4. import '../../../../resource/assets.gen.dart';
  5. import '../../../../resource/colors.gen.dart';
  6. import '../../../../utils/step_card_util.dart';
  7. import '../../intimacy_analyse_upload/widget/upload_add_widget.dart';
  8. import '../../intimacy_analyse_upload/widget/upload_item_widget.dart';
  9. import '../../intimacy_analyse_upload/widget/upload_nine_grid.dart';
  10. import '../step_card.dart';
  11. /// 上传步骤卡片
  12. class UploadStepCard extends StatelessWidget {
  13. /// 图片资源列表
  14. final List<UploadInfo> imageUploadInfoList;
  15. /// 顶部标题区域的组件
  16. final Widget? topTitleWidget;
  17. /// 底部的子组件,可以没有
  18. final Widget? bottomChild;
  19. /// 点击上传按钮的回调
  20. final OnClickAddCallback? onClickAddCallback;
  21. /// 点击删除时回调
  22. final OnClickDeleteCallback? onClickDeleteCallback;
  23. const UploadStepCard({
  24. super.key,
  25. required this.imageUploadInfoList,
  26. this.topTitleWidget,
  27. this.bottomChild,
  28. this.onClickAddCallback,
  29. this.onClickDeleteCallback,
  30. });
  31. @override
  32. Widget build(BuildContext context) {
  33. return StepCard(
  34. // 背景图片
  35. bgImageProvider: StepCardUtil.getCardBgImageProvider(
  36. imageUploadInfoList.length,
  37. ),
  38. // 顶部的标题
  39. topTitleWidget: topTitleWidget,
  40. // 顶部的图标
  41. topIconWidget: Assets.images.iconIntimacyAnalyseUploadTop.image(
  42. height: 63.h,
  43. width: 103.w,
  44. ),
  45. // 顶部图标的位置
  46. topIconWidgetLocation: StepCardUtil.calculateTopIconWidgetLocation(
  47. imageUploadInfoList.length,
  48. ),
  49. contentWidget: Column(
  50. children: [
  51. SizedBox(height: 14.h),
  52. // 图片九宫格
  53. Container(
  54. margin: EdgeInsets.only(left: 12.w, right: 12.w),
  55. padding: EdgeInsets.only(
  56. left: 12.w,
  57. top: 12.h,
  58. right: 12.w,
  59. bottom: 12.h,
  60. ),
  61. decoration: BoxDecoration(
  62. color: ColorName.white,
  63. borderRadius: BorderRadius.circular(16.r),
  64. ),
  65. // 图片九宫格
  66. child: UploadNineGrid(
  67. mode: Mode.edit,
  68. imageUploadInfoList: imageUploadInfoList,
  69. maxCount: 9,
  70. spacing: 8.0,
  71. onClickAddCallback: onClickAddCallback,
  72. onClickDeleteCallback: onClickDeleteCallback,
  73. ),
  74. ),
  75. SizedBox(height: 10.h),
  76. // 当前的亲密关系
  77. bottomChild ?? SizedBox(),
  78. ],
  79. ),
  80. );
  81. }
  82. }