dashboard_item.dart 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. import 'package:cpt_sg/modules/agency/agency_add/agency_add_page.dart';
  2. import 'package:cs_resources/constants/color_constants.dart';
  3. import 'package:cs_resources/generated/assets.dart';
  4. import 'package:domain/entity/response/s_g_dashboard_entity.dart';
  5. import 'package:flutter/cupertino.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:flutter/widgets.dart';
  8. import 'package:plugin_basic/basic_export.dart';
  9. import 'package:widgets/ext/ex_widget.dart';
  10. import 'package:widgets/my_load_image.dart';
  11. import 'package:widgets/my_text_view.dart';
  12. /*
  13. * 中介的各种统计数据
  14. */
  15. class DashboardItem extends StatelessWidget {
  16. final int index;
  17. final SGDashboardAgencyList item;
  18. void Function(String? agencyId, String? outletId, String? day)? OnItemClickAction;
  19. DashboardItem({
  20. required this.index,
  21. required this.item,
  22. this.OnItemClickAction,
  23. });
  24. @override
  25. Widget build(BuildContext context) {
  26. return Container(
  27. margin: const EdgeInsets.only(left: 15, right: 15, top: 5, bottom: 5),
  28. child: Column(
  29. mainAxisSize: MainAxisSize.max,
  30. crossAxisAlignment: CrossAxisAlignment.start,
  31. children: [
  32. MyTextView(
  33. "${item.agencyName} (${item.outletName})",
  34. isFontMedium: true,
  35. marginBottom: 9,
  36. textColor: Colors.white,
  37. fontSize: 14,
  38. ),
  39. // 星期中每一天的数据
  40. GridView.builder(
  41. padding: EdgeInsets.zero,
  42. physics: const NeverScrollableScrollPhysics(),
  43. // 禁用 GridView 的滚动
  44. shrinkWrap: true,
  45. // 适应内容高度
  46. gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
  47. crossAxisCount: 2, // 每行2个元素
  48. crossAxisSpacing: 9,
  49. mainAxisSpacing: 9,
  50. childAspectRatio: 168 / 50, // 控制子项的宽高比
  51. ),
  52. itemCount: item.days.length,
  53. // 每个 SliverList 项中的网格项数量
  54. itemBuilder: (BuildContext context, int gridIndex) {
  55. return Container(
  56. decoration: BoxDecoration(
  57. color: const Color(0xFF4DCFF6).withOpacity(0.2), // 设置背景颜色和不透明度
  58. borderRadius: BorderRadius.circular(5), // 设置圆角
  59. ),
  60. child: Row(
  61. mainAxisSize: MainAxisSize.max,
  62. crossAxisAlignment: CrossAxisAlignment.center,
  63. mainAxisAlignment: MainAxisAlignment.start,
  64. children: [
  65. MyAssetImage(
  66. item.days[gridIndex].week == "Mon"
  67. ? Assets.cptReportWeekNum1
  68. : item.days[gridIndex].week == "Tue"
  69. ? Assets.cptReportWeekNum2
  70. : item.days[gridIndex].week == "Wed"
  71. ? Assets.cptReportWeekNum3
  72. : item.days[gridIndex].week == "Thu"
  73. ? Assets.cptReportWeekNum4
  74. : item.days[gridIndex].week == "Fir"
  75. ? Assets.cptReportWeekNum5
  76. : item.days[gridIndex].week == "Sat"
  77. ? Assets.cptReportWeekNum6
  78. : Assets.cptReportWeekNum7,
  79. width: 25,
  80. height: 25)
  81. .marginOnly(left: 10),
  82. MyTextView(
  83. item.days[gridIndex].day ?? "-",
  84. fontSize: 12.5,
  85. marginLeft: 10,
  86. textColor: ColorConstants.textGrayAECAE5,
  87. isFontRegular: true,
  88. ).expanded(),
  89. MyTextView(
  90. item.days[gridIndex].num ?? "-",
  91. fontSize: 13.5,
  92. marginRight: 15,
  93. textColor: ColorConstants.textYellowF8AE00,
  94. isFontBold: true,
  95. ),
  96. ],
  97. ).onTap(() {
  98. OnItemClickAction?.call(item.agencyId, item.outletId, item.days[gridIndex].day);
  99. }),
  100. );
  101. },
  102. ),
  103. ],
  104. ),
  105. );
  106. }
  107. }