|
|
@@ -31,27 +31,33 @@ Future<EventRegisterInfo?> showEventEditDialog(
|
|
|
|
|
|
class RegisterDialogController extends GetxController {
|
|
|
var registerName = '';
|
|
|
- final date = Rx<DateTime?>(null);
|
|
|
- final registerStartAt = Rx<TimeOfDay?>(null);
|
|
|
- final registerStopAt = Rx<TimeOfDay?>(null);
|
|
|
+ // final date = Rx<DateTime?>(null);
|
|
|
+ // final registerStartAt = Rx<TimeOfDay?>(null);
|
|
|
+ // final registerStopAt = Rx<TimeOfDay?>(null);
|
|
|
final selected = Rx<EventInfo?>(null);
|
|
|
- final hasPassword = false.obs;
|
|
|
- var password = '';
|
|
|
+ final hasPasswordQuery = false.obs;
|
|
|
+ final hasPasswordEvent = false.obs;
|
|
|
+ var passwordQuery = '';
|
|
|
+ var passwordEvent = '';
|
|
|
late final int mapId;
|
|
|
late final Iterable<EventInfo>? eventList;
|
|
|
late final Object _args;
|
|
|
|
|
|
+ DateTime? eventDate;
|
|
|
+ TimeOfDay? eventStartAt;
|
|
|
+ TimeOfDay? eventEndAt;
|
|
|
+
|
|
|
DateTime? showDate;
|
|
|
TimeOfDay? showStartAt;
|
|
|
TimeOfDay? showEndAt;
|
|
|
|
|
|
- String? get dateString {
|
|
|
- final d = date.value;
|
|
|
- if (d != null) {
|
|
|
- return '${d.month}/${d.day}';
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
+ // String? get dateString {
|
|
|
+ // final d = date.value;
|
|
|
+ // if (d != null) {
|
|
|
+ // return '${d.month}/${d.day}';
|
|
|
+ // }
|
|
|
+ // return null;
|
|
|
+ // }
|
|
|
|
|
|
@override
|
|
|
void onInit() {
|
|
|
@@ -66,12 +72,21 @@ class RegisterDialogController extends GetxController {
|
|
|
eventList = null;
|
|
|
mapId = args.mapId;
|
|
|
registerName = args.old.name;
|
|
|
- final d = args.old.startAt;
|
|
|
- date.value = DateTime(d.year, d.month, d.day);
|
|
|
- registerStartAt.value = TimeOfDay.fromDateTime(args.old.startAt);
|
|
|
- registerStopAt.value = TimeOfDay.fromDateTime(args.old.stopAt);
|
|
|
- password = args.old.password ?? '';
|
|
|
- hasPassword.value = args.old.password != null;
|
|
|
+ var d = args.old.eventStartAt;
|
|
|
+
|
|
|
+ eventDate = DateTime(d.day, d.month, d.day);
|
|
|
+ d = args.old.showStartAt;
|
|
|
+ showDate = DateTime(d.day, d.month, d.day);
|
|
|
+ eventStartAt = TimeOfDay.fromDateTime(args.old.eventStartAt);
|
|
|
+ eventEndAt = TimeOfDay.fromDateTime(args.old.eventStopAt);
|
|
|
+
|
|
|
+ showStartAt = TimeOfDay.fromDateTime(args.old.showStartAt);
|
|
|
+ showEndAt = TimeOfDay.fromDateTime(args.old.showStopAt);
|
|
|
+
|
|
|
+ passwordQuery = args.old.passwordQuery ?? '';
|
|
|
+ hasPasswordQuery.value = args.old.passwordQuery != null;
|
|
|
+ passwordEvent = args.old.passwordEvent ?? '';
|
|
|
+ hasPasswordEvent.value = args.old.passwordEvent != null;
|
|
|
}
|
|
|
super.onInit();
|
|
|
}
|
|
|
@@ -87,6 +102,18 @@ class RegisterDialogController extends GetxController {
|
|
|
showEndAt = endAt;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ void updateEventTime(DateTime? date, TimeOfDay? startAt, TimeOfDay? endAt) {
|
|
|
+ if (date != null) {
|
|
|
+ eventDate = date;
|
|
|
+ }
|
|
|
+ if (startAt != null) {
|
|
|
+ eventStartAt = startAt;
|
|
|
+ }
|
|
|
+ if (endAt != null) {
|
|
|
+ eventEndAt = endAt;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
class RegisterDialog extends GetView<RegisterDialogController> {
|
|
|
@@ -132,64 +159,25 @@ class RegisterDialog extends GetView<RegisterDialogController> {
|
|
|
: controller.registerName,
|
|
|
),
|
|
|
const SizedBox(height: 21.34),
|
|
|
- Row(children: [
|
|
|
- Expanded(
|
|
|
- child: Obx(() => _TextField(
|
|
|
- hint: '日期',
|
|
|
- readOnly: true,
|
|
|
- initText: c.dateString,
|
|
|
- onTap: () async {
|
|
|
- c.date.value =
|
|
|
- await _showDatePicker(context, c.date.value);
|
|
|
- }))),
|
|
|
- const SizedBox(width: 15.64),
|
|
|
- Expanded(
|
|
|
- child: Obx(() => _TextField(
|
|
|
- hint: '开始时间',
|
|
|
- readOnly: true,
|
|
|
- initText: c.registerStartAt.value?.format(context),
|
|
|
- onTap: () async {
|
|
|
- c.registerStartAt.value = await _showTimePicker(
|
|
|
- context, c.registerStartAt.value);
|
|
|
- }))),
|
|
|
- const SizedBox(width: 15.64),
|
|
|
- Expanded(
|
|
|
- child: Obx(() => _TextField(
|
|
|
- hint: '结束时间',
|
|
|
- readOnly: true,
|
|
|
- initText: c.registerStopAt.value?.format(context),
|
|
|
- onTap: () async {
|
|
|
- c.registerStopAt.value = await _showTimePicker(
|
|
|
- context, c.registerStopAt.value);
|
|
|
- }))),
|
|
|
- ]),
|
|
|
- const SizedBox(height: 21.34),
|
|
|
- // _DateTimeSelect(
|
|
|
- // title: '显示时间',
|
|
|
- // date: c.showDate,
|
|
|
- // startAt: c.showStartAt,
|
|
|
- // endAt: c.showEndAt,
|
|
|
- // onChanged: c.updateShowTime),
|
|
|
- Row(
|
|
|
- mainAxisSize: MainAxisSize.min,
|
|
|
- children: [
|
|
|
- Obx(() => Switch(
|
|
|
- value: c.hasPassword.value,
|
|
|
- onChanged: (v) {
|
|
|
- c.hasPassword.value = v;
|
|
|
- })),
|
|
|
- const Text('查询密码'),
|
|
|
- const SizedBox(width: 12),
|
|
|
- Obx(() => Expanded(
|
|
|
- child: Visibility(
|
|
|
- visible: c.hasPassword.value,
|
|
|
- child: _TextField(
|
|
|
- hint: '请输入密码',
|
|
|
- onChanged: (v) {
|
|
|
- c.password = v;
|
|
|
- })))),
|
|
|
- ],
|
|
|
- ),
|
|
|
+ _DateTimeSelect(
|
|
|
+ title: '比赛时间',
|
|
|
+ date: c.eventDate,
|
|
|
+ startAt: c.eventStartAt,
|
|
|
+ endAt: c.eventEndAt,
|
|
|
+ onChanged: c.updateEventTime),
|
|
|
+ const SizedBox(height: 12),
|
|
|
+ _DateTimeSelect(
|
|
|
+ title: '显示时间',
|
|
|
+ date: c.showDate,
|
|
|
+ startAt: c.showStartAt,
|
|
|
+ endAt: c.showEndAt,
|
|
|
+ onChanged: c.updateShowTime),
|
|
|
+ password('查询密码', c.hasPasswordQuery, (v) {
|
|
|
+ c.passwordQuery = v;
|
|
|
+ }),
|
|
|
+ password('赛事密码', c.hasPasswordEvent, (v) {
|
|
|
+ c.passwordEvent = v;
|
|
|
+ }),
|
|
|
const SizedBox(height: 21.34),
|
|
|
SizedBox(
|
|
|
width: double.infinity,
|
|
|
@@ -214,10 +202,35 @@ class RegisterDialog extends GetView<RegisterDialogController> {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ Widget password(
|
|
|
+ String title,
|
|
|
+ Rx<bool> hasPassword,
|
|
|
+ void Function(String) onChanged,
|
|
|
+ ) {
|
|
|
+ return SizedBox(
|
|
|
+ height: 80,
|
|
|
+ child: Row(mainAxisSize: MainAxisSize.min, children: [
|
|
|
+ Obx(() => Switch(
|
|
|
+ value: hasPassword.value,
|
|
|
+ onChanged: (v) {
|
|
|
+ hasPassword.value = v;
|
|
|
+ })),
|
|
|
+ Text(title),
|
|
|
+ const SizedBox(width: 12),
|
|
|
+ Obx(() => Expanded(
|
|
|
+ child: Visibility(
|
|
|
+ visible: hasPassword.value,
|
|
|
+ child: _TextField(hint: '请输入密码', onChanged: onChanged))))
|
|
|
+ ]));
|
|
|
+ }
|
|
|
+
|
|
|
void _onRegister() {
|
|
|
- final date = controller.date.value;
|
|
|
- final timeStartAt = controller.registerStartAt.value;
|
|
|
- final timeStopAt = controller.registerStopAt.value;
|
|
|
+ final showDate = controller.showDate;
|
|
|
+ final showTimeStartAt = controller.showStartAt;
|
|
|
+ final showTimeStopAt = controller.showEndAt;
|
|
|
+ final evenDate = controller.eventDate;
|
|
|
+ final eventTimeStartAt = controller.eventStartAt;
|
|
|
+ final eventTimeStopAt = controller.eventEndAt;
|
|
|
final selected = controller.selected.value;
|
|
|
final args = controller._args;
|
|
|
var selectedId = -1;
|
|
|
@@ -237,38 +250,65 @@ class RegisterDialog extends GetView<RegisterDialogController> {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (date == null) {
|
|
|
+ if (showDate == null) {
|
|
|
Get.snackbar('错误', '请选择日期');
|
|
|
return;
|
|
|
}
|
|
|
- if (timeStartAt == null) {
|
|
|
+ if (showTimeStartAt == null) {
|
|
|
Get.snackbar('错误', '请选择开始时间');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (timeStopAt == null) {
|
|
|
+ if (showTimeStopAt == null) {
|
|
|
Get.snackbar('错误', '请选择结束时间');
|
|
|
return;
|
|
|
}
|
|
|
+ if (evenDate == null) {
|
|
|
+ Get.snackbar('错误', '请选择日期');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (eventTimeStartAt == null) {
|
|
|
+ Get.snackbar('错误', '请选择开始时间');
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- final startAt =
|
|
|
- date.copyWith(hour: timeStartAt.hour, minute: timeStartAt.minute);
|
|
|
- final stopAt =
|
|
|
- date.copyWith(hour: timeStopAt.hour, minute: timeStopAt.minute);
|
|
|
+ if (eventTimeStopAt == null) {
|
|
|
+ Get.snackbar('错误', '请选择结束时间');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ final eventStartAt = evenDate.copyWith(
|
|
|
+ hour: eventTimeStartAt.hour, minute: eventTimeStartAt.minute);
|
|
|
+ final eventStopAt = evenDate.copyWith(
|
|
|
+ hour: eventTimeStopAt.hour, minute: eventTimeStopAt.minute);
|
|
|
|
|
|
- if (startAt.isAfter(stopAt)) {
|
|
|
+ if (eventStartAt.isAfter(eventStopAt)) {
|
|
|
Get.snackbar('错误', '结束时间应晚于开始时间');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ final showStartAt = showDate.copyWith(
|
|
|
+ hour: showTimeStartAt.hour, minute: showTimeStartAt.minute);
|
|
|
+ final showStopAt = showDate.copyWith(
|
|
|
+ hour: showTimeStopAt.hour, minute: showTimeStopAt.minute);
|
|
|
+
|
|
|
+ if (showStartAt.isAfter(showStopAt)) {
|
|
|
+ Get.snackbar('错误', '结束时间应晚于开始时间');
|
|
|
+ return;
|
|
|
+ }
|
|
|
Get.back(
|
|
|
result: EventRegisterInfo()
|
|
|
..id = selectedId
|
|
|
..name = controller.registerName
|
|
|
- ..startAt = startAt
|
|
|
- ..stopAt = stopAt
|
|
|
- ..password =
|
|
|
- controller.hasPassword.value ? controller.password : null);
|
|
|
+ ..showStartAt = showStartAt
|
|
|
+ ..showStopAt = showStopAt
|
|
|
+ ..eventStartAt = eventStartAt
|
|
|
+ ..eventStopAt = eventStopAt
|
|
|
+ ..passwordQuery = controller.hasPasswordQuery.value
|
|
|
+ ? controller.passwordQuery
|
|
|
+ : null
|
|
|
+ ..passwordEvent = controller.hasPasswordEvent.value
|
|
|
+ ? controller.passwordEvent
|
|
|
+ : null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -367,11 +407,12 @@ class _DateTimeSelectState extends State<_DateTimeSelect> {
|
|
|
Widget build(BuildContext context) {
|
|
|
return Column(
|
|
|
mainAxisSize: MainAxisSize.min,
|
|
|
+ crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
children: [
|
|
|
Text(widget.title),
|
|
|
Row(children: [
|
|
|
Expanded(
|
|
|
- child: Obx(() => _TextField(
|
|
|
+ child: _TextField(
|
|
|
hint: '日期',
|
|
|
readOnly: true,
|
|
|
initText: dateString(date),
|
|
|
@@ -379,10 +420,10 @@ class _DateTimeSelectState extends State<_DateTimeSelect> {
|
|
|
date = await _showDatePicker(context, date);
|
|
|
setState(() {});
|
|
|
widget.onChanged(date, null, null);
|
|
|
- }))),
|
|
|
+ })),
|
|
|
const SizedBox(width: 15.64),
|
|
|
Expanded(
|
|
|
- child: Obx(() => _TextField(
|
|
|
+ child: _TextField(
|
|
|
hint: '开始时间',
|
|
|
readOnly: true,
|
|
|
initText: startAt?.format(context),
|
|
|
@@ -390,10 +431,10 @@ class _DateTimeSelectState extends State<_DateTimeSelect> {
|
|
|
startAt = await _showTimePicker(context, startAt);
|
|
|
setState(() {});
|
|
|
widget.onChanged(null, startAt, null);
|
|
|
- }))),
|
|
|
+ })),
|
|
|
const SizedBox(width: 15.64),
|
|
|
Expanded(
|
|
|
- child: Obx(() => _TextField(
|
|
|
+ child: _TextField(
|
|
|
hint: '结束时间',
|
|
|
readOnly: true,
|
|
|
initText: endAt?.format(context),
|
|
|
@@ -401,7 +442,7 @@ class _DateTimeSelectState extends State<_DateTimeSelect> {
|
|
|
endAt = await _showTimePicker(context, endAt);
|
|
|
setState(() {});
|
|
|
widget.onChanged(null, null, endAt);
|
|
|
- }))),
|
|
|
+ })),
|
|
|
]),
|
|
|
],
|
|
|
);
|