common_point_add_page.dart 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter/src/widgets/framework.dart';
  4. import 'package:flutter_screenutil/flutter_screenutil.dart';
  5. import 'package:get/get.dart';
  6. import 'package:get/get_core/src/get_main.dart';
  7. import 'package:location/base/base_page.dart';
  8. import 'package:location/resource/colors.gen.dart';
  9. import 'package:location/utils/common_expand.dart';
  10. import '../../../resource/assets.gen.dart';
  11. import '../../../resource/string.gen.dart';
  12. import '../../../router/app_pages.dart';
  13. import '../../../utils/common_style.dart';
  14. import '../../../widget/common_view.dart';
  15. import 'common_point_add_controller.dart';
  16. class CommonPointAddPage extends BasePage<CommonPointAddController> {
  17. const CommonPointAddPage({super.key});
  18. static void start() {
  19. Get.toNamed(RoutePath.commonPointAdd);
  20. }
  21. @override
  22. bool immersive() {
  23. return true;
  24. }
  25. @override
  26. Color backgroundColor() {
  27. return '#F6F6F6'.color;
  28. }
  29. @override
  30. Widget buildBody(BuildContext context) {
  31. return Stack(
  32. children: [
  33. Assets.images.bgPageBackground.image(width: double.infinity),
  34. SafeArea(
  35. child: Column(
  36. children: [
  37. buildHeaderView(),
  38. Expanded(child: buildContentView()),
  39. buildBottomView()
  40. ],
  41. ),
  42. ),
  43. ],
  44. );
  45. }
  46. Widget buildHeaderView() {
  47. return CommonView.buildAppBar(StringName.commonPointAdd,
  48. backOnTap: controller.onBack);
  49. }
  50. Widget buildContentView() {
  51. return Column(
  52. children: [
  53. buildCommonPointAddressSettingView(),
  54. buildCommonPointRemindSettingView()
  55. ],
  56. );
  57. }
  58. Widget buildCommonPointRemindSettingView() {
  59. return Container(
  60. width: 336.w,
  61. margin: EdgeInsets.only(bottom: 12.w),
  62. padding: EdgeInsets.symmetric(horizontal: 12.w),
  63. decoration: BoxDecoration(
  64. color: ColorName.white,
  65. borderRadius: BorderRadius.circular(12.r),
  66. ),
  67. child: Column(
  68. crossAxisAlignment: CrossAxisAlignment.start,
  69. children: [
  70. SizedBox(height: 16.w),
  71. Text(
  72. StringName.commonPointAddRemind,
  73. style: TextStyle(
  74. fontSize: 14.sp,
  75. color: ColorName.black90,
  76. fontWeight: FontWeight.bold),
  77. ),
  78. SizedBox(height: 6.w),
  79. buildAddItem(StringName.commonPointAddGuardTimePeriod,
  80. contentWidget: Obx(() {
  81. return Text(
  82. controller.guardTimePeriod == null
  83. ? StringName.commonPointAddGuardTimePeriodHint
  84. : controller.guardTimePeriod!,
  85. style: TextStyle(
  86. fontSize: 13.sp,
  87. color: controller.guardTimePeriod == null
  88. ? ColorName.black30
  89. : ColorName.black60),
  90. );
  91. }), onClick: controller.onGuardTimePeriodClick),
  92. buildAddItem(StringName.commonPointAddMessageReminder,
  93. contentWidget: Text(
  94. StringName.commonPointAddMessageReminderHint,
  95. style: TextStyle(fontSize: 13.sp, color: ColorName.black30),
  96. ),
  97. isShowBottomLine: false,
  98. onClick: controller.onSelectMessageReminderClick),
  99. ],
  100. ),
  101. );
  102. }
  103. Widget buildCommonPointAddressSettingView() {
  104. return Container(
  105. width: 336.w,
  106. margin: EdgeInsets.only(bottom: 12.w),
  107. padding: EdgeInsets.symmetric(horizontal: 12.w),
  108. decoration: BoxDecoration(
  109. color: ColorName.white,
  110. borderRadius: BorderRadius.circular(12.r),
  111. ),
  112. child: Column(
  113. crossAxisAlignment: CrossAxisAlignment.start,
  114. children: [
  115. SizedBox(height: 16.w),
  116. Text(
  117. StringName.commonPointAddTitle,
  118. style: TextStyle(
  119. fontSize: 14.sp,
  120. color: ColorName.black90,
  121. fontWeight: FontWeight.bold),
  122. ),
  123. SizedBox(height: 6.w),
  124. buildAddItem(StringName.commonPointAddName,
  125. contentWidget: TextField(
  126. controller: controller.titleController,
  127. style: TextStyle(fontSize: 14.sp, color: '#99000000'.color),
  128. maxLines: 1,
  129. maxLength: 30,
  130. keyboardType: TextInputType.text,
  131. textAlignVertical: TextAlignVertical.center,
  132. textInputAction: TextInputAction.next,
  133. decoration: InputDecoration(
  134. hintText: StringName.commonPointAddNameHint,
  135. counterText: '',
  136. hintStyle:
  137. TextStyle(fontSize: 13.sp, color: "#4D000000".toColor()),
  138. labelStyle: TextStyle(
  139. fontSize: 13.sp,
  140. color: ColorName.primaryTextColor,
  141. ),
  142. contentPadding: EdgeInsets.only(right: 10.w),
  143. border: const OutlineInputBorder(borderSide: BorderSide.none),
  144. ),
  145. ), titleDescWidget: Obx(() {
  146. if (controller.isShowDuplicateName) {
  147. return Text(
  148. StringName.commonPointAddRepeat,
  149. style: TextStyle(fontSize: 10.sp, color: '#FF7272'.color),
  150. );
  151. } else {
  152. return SizedBox.shrink();
  153. }
  154. }), isShowArrow: false),
  155. buildAddItem(StringName.commonPointAddSelectAAddress,
  156. contentWidget: Text(
  157. StringName.commonPointAddSelectAAddressHint,
  158. style:
  159. TextStyle(fontSize: 13.sp, color: ColorName.colorPrimary),
  160. ),
  161. isShowBottomLine: false,
  162. onClick: controller.onSelectAddressClick),
  163. ],
  164. ),
  165. );
  166. }
  167. Widget buildAddItem(String title,
  168. {required Widget contentWidget,
  169. Widget? titleDescWidget,
  170. bool isShowArrow = true,
  171. bool isShowBottomLine = true,
  172. VoidCallback? onClick}) {
  173. return SizedBox(
  174. height: 52.w,
  175. child: Row(
  176. children: [
  177. SizedBox(
  178. width: 85.w,
  179. child: Column(
  180. crossAxisAlignment: CrossAxisAlignment.start,
  181. mainAxisAlignment: MainAxisAlignment.center,
  182. children: [
  183. Text(title,
  184. style:
  185. TextStyle(fontSize: 14.sp, color: ColorName.black90)),
  186. if (titleDescWidget != null) titleDescWidget
  187. ],
  188. )),
  189. Expanded(
  190. child: GestureDetector(
  191. behavior: HitTestBehavior.translucent,
  192. onTap: onClick,
  193. child: Row(
  194. children: [
  195. Expanded(
  196. child: Column(
  197. children: [
  198. Expanded(
  199. child: Container(
  200. margin: EdgeInsets.only(right: 16.w),
  201. child: Align(
  202. alignment: Alignment.centerLeft,
  203. child: contentWidget,
  204. ))),
  205. if (isShowBottomLine)
  206. Container(
  207. width: double.infinity,
  208. height: 0.5.w,
  209. color: '#14000000'.color)
  210. ],
  211. )),
  212. if (isShowArrow)
  213. Assets.images.iconCommonPointAddArrow
  214. .image(width: 10.w, height: 10.w)
  215. ],
  216. ),
  217. ),
  218. )
  219. ],
  220. ),
  221. );
  222. }
  223. Widget buildBottomView() {
  224. return Container(
  225. width: 330.w,
  226. height: 46.w,
  227. decoration: getPrimaryBtnDecoration(10.r),
  228. margin: EdgeInsets.symmetric(vertical: 12.w),
  229. child: Center(
  230. child: Text(
  231. StringName.commonPointSettingBtnAddTxt,
  232. style: TextStyle(fontSize: 14.sp, color: ColorName.white),
  233. ),
  234. ),
  235. );
  236. }
  237. }