chooseVisitTimeBottomFooter.dart 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import 'package:cpt_services/components/chooseVisitTimeBottomFooter_vm.dart';
  2. import 'package:cpt_services/components/chooseVisitTimeContent_vm.dart';
  3. import 'package:cpt_services/components/status_card_item.dart';
  4. import 'package:cs_resources/generated/l10n.dart';
  5. import 'package:cs_resources/theme/app_colors_theme.dart';
  6. import 'package:flutter/material.dart';
  7. import 'package:auto_route/auto_route.dart';
  8. import 'package:flutter_hooks/flutter_hooks.dart';
  9. import 'package:hooks_riverpod/hooks_riverpod.dart';
  10. import 'package:shared/utils/log_utils.dart';
  11. import 'package:widgets/ext/ex_widget.dart';
  12. import 'package:widgets/my_text_view.dart';
  13. import 'package:widgets/widget_export.dart';
  14. import 'package:widgets/my_cart_num.dart';
  15. import '../modules/services/service_order_confirm/service_order_confirm_vm.dart';
  16. class ChooseVisitTimeBottomFooter extends HookConsumerWidget {
  17. final int id;
  18. final String cleanServiceType;
  19. const ChooseVisitTimeBottomFooter({Key? key,required this.id, required this.cleanServiceType}) : super(key: key);
  20. @override
  21. Widget build(BuildContext context, WidgetRef ref) {
  22. final vm = ref.read(chooseVisitTimeBottomFooterVmProvider.notifier);
  23. final state = ref.watch(chooseVisitTimeBottomFooterVmProvider);
  24. num cleanServiceToast = ref.watch(serviceOrderConfirmVmProvider.select((state) => state.cleanServiceToTalCost??0.0));
  25. num extraPrice = ref.watch(chooseVisitTimeContentVmProvider.select((state) => state.extraTotalCost??0.0));
  26. num totalPrice = cleanServiceToast + extraPrice;
  27. useEffect((){
  28. // 组件挂载时执行 - 执行接口请求
  29. // Future.microtask(() => vm.initPageData());
  30. return () {
  31. // 组件卸载时执行
  32. };
  33. },[]);
  34. return Container(
  35. height: 50,
  36. width: double.infinity,
  37. child: Row(
  38. mainAxisAlignment: MainAxisAlignment.center,
  39. mainAxisSize: MainAxisSize.max,
  40. children: [
  41. Container(
  42. constraints: const BoxConstraints(
  43. minWidth: 122,
  44. ),
  45. child: Row(
  46. mainAxisAlignment: MainAxisAlignment.center,
  47. crossAxisAlignment: CrossAxisAlignment.center,
  48. mainAxisSize: MainAxisSize.max,
  49. children: [
  50. Container(
  51. alignment: Alignment.center,
  52. padding: const EdgeInsets.only(left:5, right: 0,top:5,bottom: 5),
  53. child: Row(
  54. mainAxisAlignment: MainAxisAlignment.center,
  55. mainAxisSize: MainAxisSize.max,
  56. children: [
  57. MyTextView(
  58. "\$$totalPrice",
  59. fontSize: 18,
  60. textColor: Colors.white,
  61. isFontRegular: true,
  62. maxLines:2,
  63. isTextEllipsis: true,
  64. marginLeft: 5,
  65. marginRight: 15,
  66. ),
  67. ],
  68. ),
  69. ),
  70. ],
  71. ).backgroundColor(context.appColors.textPrimary),
  72. ),
  73. Expanded(
  74. child: Container(
  75. color: context.appColors.redDefault,
  76. child: Center(
  77. child: MyTextView(
  78. S.current.confirm,
  79. textColor: context.appColors.textWhite,
  80. fontSize: 17,
  81. isFontMedium: true,
  82. textAlign: TextAlign.center,
  83. ),
  84. ),
  85. ).onTap((){
  86. vm.handlerClickVisitTimeConfirm(context, id: id , cleanServiceType: cleanServiceType);
  87. }),
  88. ),
  89. ],
  90. ),
  91. );
  92. }
  93. }