import 'package:app_business/service/api.dart'; import 'package:app_business/view/home/dialog_event_register.dart'; import 'package:pretty_qr_code/pretty_qr_code.dart'; import 'package:track_common/widget.dart'; import 'package:track_common/widget/prelude.dart'; import 'event_manage_controller.dart'; class EventManage extends GetView { const EventManage({super.key}); @override Widget build(BuildContext context) { return GetBuilder( init: EventManagerController(), builder: (c) { return Level2View( level1: level1(), level2: level2(), level1Title: '赛事列表', level1Action: wDate(context), level2Title: '用户列表', level2SubTitle: Obx(() => Text( c.selected?.name != null ? '(${c.selected!.name})' : '', style: const TextStyle(color: Colors.grey, fontSize: 14.22), ))); }); } Widget wDate(BuildContext context) { return GestureDetector( onTap: () => _onTapDate(context), child: Obx(() => Container( height: 22.04, padding: const EdgeInsets.symmetric(horizontal: 8), decoration: BoxDecoration( border: Border.all(color: const Color(0xffe3e3e3), width: 0.71), borderRadius: BorderRadius.circular(2.13)), child: Text(controller.dateStr), ))); } Future _onTapDate(BuildContext context) async { final date = await showDatePicker( context: context, initialDate: controller.filterDate.value, firstDate: DateTime.now(), lastDate: DateTime.now().add(365.days)); if (date != null) { controller.filterDate.value = date; controller.flushList(); } } Widget level1() { return Obx(() => ListView( children: controller.eventList .map((e) => EventTitle( data: e, selected: controller.selectedId.value == e.id, onTap: () => controller.selectedId.value = e.id, )) .toList())); } Widget level2() { return Column( children: [ Expanded( child: Obx(() => ListView( children: controller.userList .map((e) => Text('${e.name}')) .toList(), ))) ], ); } } class EventTitle extends GetView { final bool selected; final EventInManage data; final VoidCallback onTap; const EventTitle( {super.key, required this.selected, required this.data, required this.onTap}); @override Widget build(BuildContext context) { var children = [ AppTitleList( title: data.name, tail: Text('${data.userList.length}'), isSelected: selected, onTap: onTap, ) ]; if (selected) { children.add(SizedBox( height: 2, )); children.add(Container( decoration: const BoxDecoration( color: Color(0xfff1f1f1), borderRadius: BorderRadius.only( bottomLeft: Radius.circular(14.22), bottomRight: Radius.circular(14.22))), padding: const EdgeInsets.all(16.3), width: 221.87, child: Column( mainAxisSize: MainAxisSize.min, children: [ Row( children: [ DarkButton( onPressed: data.isAllowDel ? () => controller.deleteEvent(data) : null, child: const Text('删除')), const Spacer(), DarkButton( color: Colors.blue, onPressed: data.isAllowEdit ? () async { final r = await showEventEditDialog( controller.mapId!, EventRegisterInfo()..name = data.name); if (r != null) { controller.eventEdit(data.id, r); } } : null, child: const Text('修改')), ], ), const SizedBox(height: 24), SizedBox.square( dimension: 128, child: PrettyQrView.data(data: data.qrCode)), const SizedBox(height: 12), const Text( '用彩图奔跑APP扫码签到', style: TextStyle(color: Colors.red, fontSize: 14.22), ) ], ), )); } return Column( mainAxisSize: MainAxisSize.min, children: children, ); } }