import 'package:cpt_services/components/status_card_item_vm.dart'; import 'package:cpt_services/modules/services/homeService/home_service_page.dart'; import 'package:cs_resources/theme/app_colors_theme.dart'; import 'package:domain/entity/service_in_progress_entity.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:shared/utils/color_utils.dart'; import 'package:shared/utils/ext_dart.dart'; import 'package:shared/utils/log_utils.dart'; import 'package:widgets/ext/ex_widget.dart'; import 'package:widgets/my_button.dart'; import 'package:widgets/my_text_view.dart'; import '../constants_services.dart'; class RepairStausCardItem extends HookConsumerWidget { ServiceInProgressList? item; double? cardHeight; final Function(dynamic)? onClickCard; RepairStausCardItem({ Key? key, required this.item, this.onClickCard, cardHeight, }) : super(key: key) { this.cardHeight = cardHeight ?? 180.0; } @override Widget build(BuildContext context, WidgetRef ref) { // final vm = ref.read(statusCardItemVmProvider.notifier); // List>? actionBtnList = servicesConstants.servicesStatusActionBtnList[serviceStatusCode]; // Log.d("actionBtnList $actionBtnList"); // useEffect((){ // vm.setInitData(context, serviceId, serviceTypeCode, serviceStatusCode); // return () { // }; // },[]); return Container( width: double.infinity, height: cardHeight, alignment: Alignment.center, child: Padding( padding: const EdgeInsets.only(left: 18.0, right: 18.0, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ // 标题 和状态 Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ // 标题 和状态 Expanded( child: MyTextView( item?.service?.name ?? "-", fontSize: 16, maxLines: 1, isFontMedium: true, textAlign: TextAlign.left, ), ), // 状态 MyTextView( item?.orderStatus ?? '', fontSize: 12, fontWeight: FontWeight.w500, textColor: getStatusColor(context, item!), ), ], ), // 公司名称 MyTextView( item?.merchant?.name ?? "-", fontSize: 14, maxLines: 1, isFontRegular: true, textAlign: TextAlign.left, marginTop: 5, ), const SizedBox( height: 5, ), //公司名称 MyTextView( item?.merchantNotes ?? "-", fontSize: 14, maxLines: 1, isFontRegular: true, textAlign: TextAlign.left, ), const SizedBox( height: 5, ), const SizedBox( height: 7.5, ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ MyTextView( "The staff will contact you soon", fontSize: 14, maxLines: 1, isFontRegular: true, textAlign: TextAlign.left, textColor: context.appColors.textDarkGray, ), ], ), ], )), // Container( // margin: EdgeInsets.only(top: 15), // child: _buildActionSection(context,actionBtnList!, vm, ref), // ), ], ), ), ); } Widget _buildActionSection(BuildContext context, List> actionBtnList, StatusCardItemVm vm, WidgetRef ref) { return LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) { final maxHeight = constraints.maxHeight; final minHeight = constraints.minHeight; final maxWidth = constraints.maxWidth; // Log.d("---maxHeight-----$maxHeight-- $minHeight $maxWidth--"); return Container( height: 50, // color: Colors.red, width: maxWidth, child: Row( mainAxisAlignment: MainAxisAlignment.end, mainAxisSize: MainAxisSize.max, children: List.generate(actionBtnList.length, (index) { var item = actionBtnList[index]; // return Expanded( // child: _buildBtn(context, item), // ); return _buildBtn(context, item, vm, ref); })), ).scrollable( scrollDirection: Axis.horizontal, physics: BouncingScrollPhysics(), ); }); } Widget _buildBtn(BuildContext context, Map btnItem, StatusCardItemVm vm, WidgetRef ref) { // final btnCode = btnItem['code']; return MyButton( onPressed: () { vm.handlerClickActionBtn(context, btnItem); }, text: btnItem['text'], radius: 10.0, textColor: context.appColors.textWhite, backgroundColor: ColorUtils.string2Color(btnItem['btnColor']), fontSize: 12, padding: EdgeInsets.symmetric(horizontal: 5), minWidth: btnItem['btnWidth']?.toDouble(), minHeight: btnItem['btnHeight']?.toDouble() + 5, ).marginOnly(left: 5); } Color getStatusColor(BuildContext context,ServiceInProgressList item) { switch (item.orderStatus) { case 'In Progress': return ColorUtils.string2Color('#FE4066'); case 'Complete': return ColorUtils.string2Color('#00B03E'); default: return context.appColors.textPrimary; } } }