import 'package:cpnav/pages/pass_track/controller.dart'; import 'package:cpnav/pages/setting/project/model.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:scence_map/controllers/controller.dart'; import '../../models/user.dart'; import '../../service/base.dart'; import '../../service/user/loginprefs.dart'; LoginPrefs loginPrefs = LoginPrefs(); ScenceMapController mapController = Get.find(); PassTrackController passTrackController = Get.find(); final box = GetStorage(); // 实例化 GetStorage class SettingController extends GetxController { String projType = "hydraulic_tamping"; List projectList = []; Rx currentProject = Rx(null); List deviceList = []; Rx currentDevice = Rx(null); var updateCount = 0.obs; GetServices services = GetServices(); var isInitialized = false; // @override // void onInit() async { // super.onInit(); // } init() async { isInitialized = false; UserModel? getUser = UserController().getUser(); // services.projType = projType; if (getUser == null) { Map? person = await services.getPerson(); if (person == null || person.isEmpty) { isInitialized = true; return; } UserController().setUser(person); getUser = UserModel.fromJson(person); } // services.org_code = getUser.orgCode; List projList = await services.getproject(getUser.orgCode, projType); for (var element in projList) { projectList.add(ProjectModel.fromJson(element)); } currentProject.value = getproject(); currentDevice.value = getdevice(); if (currentProject.value == null && projectList.isNotEmpty) { currentProject.value = projectList[0]; setProject(currentProject.value!.toJson()); // services.projCode = currentProject.value!.projCode; await getBindService(services); } isInitialized = true; } getBindService(GetServices service) async { deviceList.length = 0; List list = await service.getDeviceBind(projType, currentProject.value!.projCode); mapController.deviceList = {}; for (var element in list) { DeviceItem device = DeviceItem.fromJson(element); if (device.type != "rtk_base") { deviceList.add(device); mapController.addDevice(device); } } if (deviceList.isNotEmpty) { currentDevice.value = deviceList[0]; } setDevice(currentDevice.value!.toJson()); } updateProject(ProjectModel val) async { currentProject.value = val; // services.projCode = val.projCode; setProject(currentProject.value!.toJson()); passTrackController.loadSideLine(); await getBindService(services); updateCount.value++; } void setProject(Map data) { box.write('project', data); update(); } void setDevice(Map data) { box.write('device', data); } ProjectModel? getproject() { final p = box.read("project"); if (p != null) { return ProjectModel.fromJson(p); } return null; } DeviceItem? getdevice() { final d = box.read("device"); if (d != null) { return DeviceItem.fromJson(d); } return null; } }