chooseVisitTimeTitle.dart 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. import 'package:cpt_services/components/chooseHouseCleanContent_vm.dart';
  2. import 'package:cpt_services/components/chooseVisitTimeBottomFooter.dart';
  3. import 'package:cpt_services/components/chooseVisitTimeTitle_vm.dart';
  4. import 'package:cpt_services/modules/services/service_clean_detail/service_clean_detail_vm.dart';
  5. import 'package:cs_resources/generated/l10n.dart';
  6. import 'package:cs_resources/theme/app_colors_theme.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:auto_route/auto_route.dart';
  9. import 'package:flutter_hooks/flutter_hooks.dart';
  10. import 'package:hooks_riverpod/hooks_riverpod.dart';
  11. import 'package:plugin_basic/provider/app_config/app_config_service.dart';
  12. import 'package:shared/utils/color_utils.dart';
  13. import 'package:shared/utils/log_utils.dart';
  14. import 'package:widgets/ext/ex_widget.dart';
  15. import 'package:widgets/my_text_view.dart';
  16. import 'package:widgets/utils/dark_theme_util.dart';
  17. import 'package:widgets/widget_export.dart';
  18. import 'chooseVisitTimeTitle_state.dart';
  19. import 'chooseVisitTimeTitle_vm.dart';
  20. class ChooseVisitTimeTitle extends HookConsumerWidget {
  21. final int id;
  22. final String cleanServiceTypeStr;
  23. const ChooseVisitTimeTitle(
  24. {Key? key,required this.id, required this.cleanServiceTypeStr,}) : super(key: key);
  25. @override
  26. Widget build(BuildContext context, WidgetRef ref) {
  27. final vm = ref.read(chooseVisitTimeTitleVmProvider.notifier);
  28. final state = ref.watch(chooseVisitTimeTitleVmProvider);
  29. List<DayInfoItem> dayInfoList = ref.watch(chooseVisitTimeTitleVmProvider.select((state) => state.dayInfoList))?? [];
  30. useEffect((){
  31. // 组件挂载时执行 - 执行接口请求
  32. // Future.microtask(() => vm.initPageData());
  33. return () {
  34. // 组件卸载时执行
  35. };
  36. },[]);
  37. return Container(
  38. child: Column(
  39. mainAxisAlignment: MainAxisAlignment.start,
  40. children: [
  41. Padding(
  42. padding: const EdgeInsets.only(left: 20, right: 20, top: 19, bottom: 16.5),
  43. child: Column(
  44. children: [
  45. MyTextView(
  46. S.current.choose_visit_time,
  47. textColor: context.appColors.textBlack,
  48. textAlign: TextAlign.left,
  49. isFontBold: true,
  50. fontSize: 17,
  51. boxWidth: double.infinity,
  52. // maxLines: 5,
  53. ),
  54. ],
  55. ),
  56. ),
  57. Container(
  58. width: double.infinity,
  59. height: 65,
  60. // color: Colors.red,
  61. margin: const EdgeInsets.only(left: 20, right: 20, top: 0, bottom: 0),
  62. child: ListView.builder(
  63. itemCount: dayInfoList.length,
  64. shrinkWrap: true,
  65. scrollDirection: Axis.horizontal,
  66. itemBuilder: (context, index){
  67. DayInfoItem item = dayInfoList[index];
  68. return Container(
  69. width: 100,
  70. height: 65,
  71. decoration: BoxDecoration(
  72. color: item.isSelected ? DarkThemeUtil.multiColors(context, ColorUtils.string2Color('#F5F5F7'), darkColor: AppColorsTheme.colorPrimary.withOpacity(0.3)): context.appColors.whiteBG,
  73. borderRadius: const BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(10)),
  74. ),
  75. child: Column(
  76. mainAxisAlignment: MainAxisAlignment.center,
  77. children: [
  78. MyTextView(
  79. "${item.day}",
  80. textColor: context.appColors.textBlack,
  81. fontSize: 12,
  82. isFontBold: true,
  83. ),
  84. MyTextView(
  85. "${item.date}",
  86. textColor: context.appColors.textBlack,
  87. fontSize: 12,
  88. isFontBold: true,
  89. marginTop: 5,
  90. ),
  91. ]
  92. )
  93. ).onTap((){
  94. // 点击某一天
  95. vm.handlerClicKSomeDay(context, item, index);
  96. });
  97. }
  98. ),
  99. ),
  100. // 分割线
  101. Divider(
  102. color: context.appColors.grayBgE9,
  103. height: 1,
  104. ),
  105. ],
  106. ),
  107. );
  108. }
  109. }