moving_date_page.dart 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import 'package:cs_resources/generated/l10n.dart';
  2. import 'package:cs_resources/theme/app_colors_theme.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:auto_route/auto_route.dart';
  5. import 'package:flutter_hooks/flutter_hooks.dart';
  6. import 'package:hooks_riverpod/hooks_riverpod.dart';
  7. import 'package:plugin_platform/engine/toast/toast_engine.dart';
  8. import 'package:router/ext/auto_router_extensions.dart';
  9. import 'package:widgets/ext/ex_widget.dart';
  10. import 'package:widgets/my_appbar.dart';
  11. import 'package:widgets/my_button.dart';
  12. import 'package:widgets/my_text_view.dart';
  13. import 'package:widgets/shatter/picker_container.dart';
  14. import '../../router/page/form_page_router.dart';
  15. import 'vm/apply_view_model.dart';
  16. @RoutePage()
  17. class MovingDatePage extends HookConsumerWidget {
  18. const MovingDatePage({Key? key}) : super(key: key);
  19. //启动当前页面
  20. static void startInstance({BuildContext? context}) {
  21. if (context != null) {
  22. context.router.push(const MovingDatePageRoute());
  23. } else {
  24. appRouter.push(const MovingDatePageRoute());
  25. }
  26. }
  27. @override
  28. Widget build(BuildContext context, WidgetRef ref) {
  29. final viewModel = ref.watch(applyViewModelProvider.notifier);
  30. final state = ref.watch(applyViewModelProvider);
  31. useEffect(() {
  32. //赋值State的值
  33. Future.microtask(() {});
  34. return () {
  35. // 组件卸载时执行
  36. };
  37. }, []);
  38. return WillPopScope(
  39. child: Scaffold(
  40. appBar: MyAppBar.appBar(context, state.applyDetail?['title']),
  41. backgroundColor: context.appColors.backgroundWhite,
  42. body: Column(
  43. crossAxisAlignment: CrossAxisAlignment.start,
  44. children: [
  45. SingleChildScrollView(
  46. scrollDirection: Axis.vertical,
  47. physics: const BouncingScrollPhysics(),
  48. child: Container(
  49. width: double.infinity,
  50. child: Column(
  51. mainAxisSize: MainAxisSize.max,
  52. crossAxisAlignment: CrossAxisAlignment.start,
  53. children: [
  54. //下拉选 - 开始时间
  55. MyTextView(
  56. S.current.start_date_caps,
  57. fontSize: 17,
  58. marginTop: 30,
  59. marginLeft: 15,
  60. marginBottom: 16,
  61. isFontMedium: true,
  62. textColor: context.appColors.textBlack,
  63. ),
  64. PickerContainer(
  65. hint: S.current.choose_date,
  66. onClick: (){
  67. viewModel.pickDate(null,(date){
  68. ToastEngine.show("选择的日期:$date");
  69. });
  70. },
  71. ).marginOnly(left: 15, right: 15),
  72. //下拉选 - 结束时间
  73. MyTextView(
  74. S.current.end_date_caps,
  75. fontSize: 17,
  76. marginTop: 14,
  77. marginLeft: 15,
  78. marginBottom: 16,
  79. isFontMedium: true,
  80. textColor: context.appColors.textBlack,
  81. ),
  82. PickerContainer(
  83. hint: S.current.choose_date,
  84. onClick: (){
  85. viewModel.pickDate(null,(date){
  86. ToastEngine.show("选择的日期:$date");
  87. });
  88. },
  89. ).marginOnly(left: 15, right: 15),
  90. //下拉选 - 到达时间
  91. MyTextView(
  92. S.current.time_of_arrival,
  93. fontSize: 17,
  94. marginTop: 14,
  95. marginLeft: 15,
  96. marginBottom: 16,
  97. isFontMedium: true,
  98. textColor: context.appColors.textBlack,
  99. ),
  100. PickerContainer(
  101. hint: S.current.choose_date,
  102. onClick: (){
  103. viewModel.pickDate(null,(date){
  104. ToastEngine.show("选择的日期:$date");
  105. });
  106. },
  107. ).marginOnly(left: 15, right: 15),
  108. ],
  109. ),
  110. ),
  111. ).expanded(),
  112. //底部按钮
  113. MyButton(
  114. onPressed: viewModel.gotoNextPage,
  115. text: S.current.next,
  116. textColor: Colors.white,
  117. backgroundColor: context.appColors.btnBgDefault,
  118. fontWeight: FontWeight.w500,
  119. type: ClickType.throttle,
  120. fontSize: 16,
  121. minHeight: 50,
  122. radius: 0,
  123. ),
  124. ],
  125. )),
  126. onWillPop: () async {
  127. viewModel.handlePopAction();
  128. return true;
  129. });
  130. }
  131. }