repair_status_card_item.dart 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. import 'package:cpt_services/components/status_card_item_vm.dart';
  2. import 'package:cpt_services/modules/services/homeService/home_service_page.dart';
  3. import 'package:cs_resources/theme/app_colors_theme.dart';
  4. import 'package:domain/entity/service_in_progress_entity.dart';
  5. import 'package:flutter/cupertino.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:flutter_hooks/flutter_hooks.dart';
  8. import 'package:hooks_riverpod/hooks_riverpod.dart';
  9. import 'package:shared/utils/color_utils.dart';
  10. import 'package:shared/utils/ext_dart.dart';
  11. import 'package:shared/utils/log_utils.dart';
  12. import 'package:widgets/ext/ex_widget.dart';
  13. import 'package:widgets/my_button.dart';
  14. import 'package:widgets/my_text_view.dart';
  15. import '../constants_services.dart';
  16. class RepairStausCardItem extends HookConsumerWidget {
  17. ServiceInProgressList? item;
  18. double? cardHeight;
  19. final Function(dynamic)? onClickCard;
  20. RepairStausCardItem({
  21. Key? key,
  22. required this.item,
  23. this.onClickCard,
  24. cardHeight,
  25. }) : super(key: key) {
  26. this.cardHeight = cardHeight ?? 180.0;
  27. }
  28. @override
  29. Widget build(BuildContext context, WidgetRef ref) {
  30. // final vm = ref.read(statusCardItemVmProvider.notifier);
  31. // List<Map<String, dynamic>>? actionBtnList = servicesConstants.servicesStatusActionBtnList[serviceStatusCode];
  32. // Log.d("actionBtnList $actionBtnList");
  33. // useEffect((){
  34. // vm.setInitData(context, serviceId, serviceTypeCode, serviceStatusCode);
  35. // return () {
  36. // };
  37. // },[]);
  38. return Container(
  39. width: double.infinity,
  40. height: cardHeight,
  41. alignment: Alignment.center,
  42. child: Padding(
  43. padding: const EdgeInsets.only(left: 18.0, right: 18.0, ),
  44. child: Column(
  45. crossAxisAlignment: CrossAxisAlignment.start,
  46. mainAxisAlignment: MainAxisAlignment.center,
  47. children: [
  48. Expanded(
  49. child: Column(
  50. crossAxisAlignment: CrossAxisAlignment.start,
  51. mainAxisAlignment: MainAxisAlignment.center,
  52. children: [
  53. // 标题 和状态
  54. Row(
  55. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  56. children: [
  57. // 标题 和状态
  58. Expanded(
  59. child: MyTextView(
  60. item?.service?.name ?? "-",
  61. fontSize: 16,
  62. maxLines: 1,
  63. isFontMedium: true,
  64. textAlign: TextAlign.left,
  65. ),
  66. ),
  67. // 状态
  68. MyTextView(
  69. item?.orderStatus??"-",
  70. fontSize: 14,
  71. maxLines: 1,
  72. isFontRegular: true,
  73. textAlign: TextAlign.left,
  74. textColor: context.appColors.textPrimary,
  75. ),
  76. ],
  77. ),
  78. // 公司名称
  79. MyTextView(
  80. item?.merchant?.name ?? "-",
  81. fontSize: 14,
  82. maxLines: 1,
  83. isFontRegular: true,
  84. textAlign: TextAlign.left,
  85. marginTop: 5,
  86. ),
  87. const SizedBox(
  88. height: 5,
  89. ),
  90. //公司名称
  91. MyTextView(
  92. item?.merchantNotes ?? "-",
  93. fontSize: 14,
  94. maxLines: 1,
  95. isFontRegular: true,
  96. textAlign: TextAlign.left,
  97. ),
  98. const SizedBox(
  99. height: 5,
  100. ),
  101. const SizedBox(
  102. height: 7.5,
  103. ),
  104. Row(
  105. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  106. children: [
  107. MyTextView(
  108. "The staff will contact you soon",
  109. fontSize: 14,
  110. maxLines: 1,
  111. isFontRegular: true,
  112. textAlign: TextAlign.left,
  113. textColor: context.appColors.textDarkGray,
  114. ),
  115. ],
  116. ),
  117. ],
  118. )),
  119. // Container(
  120. // margin: EdgeInsets.only(top: 15),
  121. // child: _buildActionSection(context,actionBtnList!, vm, ref),
  122. // ),
  123. ],
  124. ),
  125. ),
  126. );
  127. }
  128. Widget _buildActionSection(BuildContext context, List<Map<String, dynamic>> actionBtnList, StatusCardItemVm vm, WidgetRef ref) {
  129. return LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) {
  130. final maxHeight = constraints.maxHeight;
  131. final minHeight = constraints.minHeight;
  132. final maxWidth = constraints.maxWidth;
  133. // Log.d("---maxHeight-----$maxHeight-- $minHeight $maxWidth--");
  134. return Container(
  135. height: 50,
  136. // color: Colors.red,
  137. width: maxWidth,
  138. child: Row(
  139. mainAxisAlignment: MainAxisAlignment.end,
  140. mainAxisSize: MainAxisSize.max,
  141. children: List.generate(actionBtnList.length, (index) {
  142. var item = actionBtnList[index];
  143. // return Expanded(
  144. // child: _buildBtn(context, item),
  145. // );
  146. return _buildBtn(context, item, vm, ref);
  147. })),
  148. ).scrollable(
  149. scrollDirection: Axis.horizontal,
  150. physics: BouncingScrollPhysics(),
  151. );
  152. });
  153. }
  154. Widget _buildBtn(BuildContext context, Map<String, dynamic> btnItem, StatusCardItemVm vm, WidgetRef ref) {
  155. // final btnCode = btnItem['code'];
  156. return MyButton(
  157. onPressed: () {
  158. vm.handlerClickActionBtn(context, btnItem);
  159. },
  160. text: btnItem['text'],
  161. radius: 10.0,
  162. textColor: context.appColors.textWhite,
  163. backgroundColor: ColorUtils.string2Color(btnItem['btnColor']),
  164. fontSize: 12,
  165. padding: EdgeInsets.symmetric(horizontal: 5),
  166. minWidth: btnItem['btnWidth']?.toDouble(),
  167. minHeight: btnItem['btnHeight']?.toDouble() + 5,
  168. ).marginOnly(left: 5);
  169. }
  170. }