| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import 'dart:async';
- import 'package:application/logger.dart';
- import 'package:common_pub/model/history_detail.dart';
- import 'package:application/service/api.dart';
- import 'package:application/service/map_watch.dart';
- import 'package:common_pub/ui/history_detail/trace_bar.dart';
- import 'package:common_pub/ui/map_view/view_map_trace.dart';
- import 'package:fixnum/fixnum.dart';
- import 'package:get/get.dart';
- import '../home_controller.dart';
- export 'package:application/service/map_watch.dart';
- class UserInfo {
- var data = ToHisUserBasic();
- final isExpand = false.obs;
- }
- typedef DetailSimple = ToHisUserInfo;
- class Detail {
- var data = ToGameDetailReply();
- }
- class DataDetailController extends GetxController {
- HomeController get _home => Get.find();
- MapWatchService? get mapWatch => MapWatchService.instance;
- final userMap = <int, UserInfo>{}.obs;
- Iterable<UserInfo> get userList => userMap.values;
- final selectedDetailSimple = DetailSimple().obs;
- final selectedUserId = (-9).obs;
- final Rx<HistoryDetail?> selectedDetail = Rx(null);
- final stub = ApiService.to.stub;
- final showDetail = false.obs;
- final isCPExpand = true.obs;
- final traceBarController = TraceBarController();
- final viewMapTraceController = ViewMapTraceController();
- StreamSubscription<int?>? _subscriptionTrace;
- @override
- void onInit() {
- super.onInit();
- _subscriptionTrace = traceBarController.cursorState.listen((p0) {
- viewMapTraceController.cursor = p0;
- });
- workFlush();
- }
- Future<void> workFlush() async {
- while (!isClosed) {
- await flushData();
- await 1.seconds.delay();
- }
- }
- Future<void> flushData() async {
- final map = mapWatch;
- if (map == null) {
- return;
- }
- try {
- final r = await ApiService.to.stub
- .toHistoryUserListQuery(IdRequest(id: map.id));
- for (final one in r.list) {
- final updated = userMap[one.oId] ?? UserInfo();
- updated.data = one;
- userMap[one.oId] = updated;
- }
- } catch (e) {
- error(e);
- }
- }
- void selectDetail(DetailSimple d, UserInfo user) async {
- selectedDetailSimple.value = d;
- selectedUserId.value = user.data.oId;
- final detail = HistoryDetail(await ApiService.to.stub
- .toHistoryGameDetail(IdRequest(id: Int64(d.gameId))));
- await detail.init(mapWatch!.plugMap.gameMap);
- final old = selectedDetail.value;
- selectedDetail.value = detail;
- if (old != null) {
- old.dispose();
- }
- }
- @override
- void onClose() {
- super.onClose();
- _subscriptionTrace?.cancel();
- }
- }
|