data_detail_controller.dart 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import 'package:application/logger.dart';
  2. import 'package:application/service/api.dart';
  3. import 'package:application/service/map_watch.dart';
  4. import 'package:fixnum/fixnum.dart';
  5. import 'package:get/get.dart';
  6. import '../home_controller.dart';
  7. export 'package:application/service/map_watch.dart';
  8. class UserInfo {
  9. var data = ToHisUserBasic();
  10. final isExpand = false.obs;
  11. }
  12. typedef DetailSimple = ToHisUserInfo;
  13. class Detail {
  14. var data = ToGameDetailReply();
  15. }
  16. class DataDetailController extends GetxController {
  17. HomeController get _home => Get.find();
  18. MapWatchService? get mapWatch => MapWatchService.instance;
  19. final userMap = <int, UserInfo>{}.obs;
  20. Iterable<UserInfo> get userList => userMap.values;
  21. final selectedDetailSimple = DetailSimple().obs;
  22. final selectedUserId = (-9).obs;
  23. final Rx<Detail?> selectedDetail = Rx(null);
  24. final stub = ApiService.to.stub;
  25. final showDetail = false.obs;
  26. @override
  27. void onInit() {
  28. super.onInit();
  29. workFlush();
  30. }
  31. Future<void> workFlush() async {
  32. while (!isClosed) {
  33. await flushData();
  34. await 1.seconds.delay();
  35. }
  36. }
  37. Future<void> flushData() async {
  38. final map = mapWatch;
  39. if (map == null) {
  40. return;
  41. }
  42. try {
  43. final r = await ApiService.to.stub
  44. .toHistoryUserListQuery(IdRequest(id: map.id));
  45. for (final one in r.list) {
  46. final updated = userMap[one.oId] ?? UserInfo();
  47. updated.data = one;
  48. userMap[one.oId] = updated;
  49. }
  50. } catch (e) {
  51. error(e);
  52. }
  53. }
  54. void selectDetail(DetailSimple d, UserInfo user) async {
  55. selectedDetailSimple.value = d;
  56. selectedUserId.value = user.data.oId;
  57. selectedDetail.value = Detail()
  58. ..data = await ApiService.to.stub
  59. .toHistoryGameDetail(IdRequest(id: Int64(d.gameId)));
  60. }
  61. }