upload_step_card.dart 2.4 KB

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