data_detail_controller.dart 1.3 KB

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