| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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: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;
- @override
- void onInit() {
- super.onInit();
- 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();
- }
- }
- }
|