import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:scence_map/controllers/controller.dart'; import '../setting_controller.dart'; import 'model.dart'; final SettingController sc = Get.find(); class ProjectView extends GetView { const ProjectView({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("项目设置"), ), body: SingleChildScrollView( padding: const EdgeInsets.symmetric(horizontal: 5), child: Column( children: [ Row( children: [ const Text("项目名称:"), Expanded( child: DropdownProject( controller: controller, ), ) ], ), const Divider(), Row( children: [ const Text("设备列表:"), Expanded( child: DropdownDevice( controller: controller, ), ) ], ), ], )), ); } } class DropdownProject extends StatefulWidget { final SettingController controller; const DropdownProject({super.key, required this.controller}); @override DropdownProjectState createState() => DropdownProjectState(); } class DropdownProjectState extends State { @override Widget build(BuildContext context) { SettingController controller = widget.controller; return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ PopupMenuButton( offset: const Offset(0, 40), onSelected: (String selectedValue) { setState(() { for (var value in controller.projectList) { if (value.projCode == selectedValue) { // controller.currentProject.update((p) { // controller.currentProject.value = value; controller.updateProject(value); // }); break; } } }); }, itemBuilder: (BuildContext context) { return controller.projectList .map>((ProjectModel value) { return PopupMenuItem( value: value.projCode, child: Text(value.name), ); }).toList(); }, child: Container( padding: const EdgeInsets.symmetric( vertical: 5.0, horizontal: 10.0), // 设置按钮的内边距 decoration: BoxDecoration( border: Border.all(color: Colors.grey), borderRadius: BorderRadius.circular(5.0), ), child: Obx(() { String text = controller.currentProject.value?.name ?? '请选择一个项目'; return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(text), const Icon(Icons.arrow_drop_down), ], ); }), ), ), ], ); } } class DropdownDevice extends StatefulWidget { final SettingController controller; const DropdownDevice({super.key, required this.controller}); @override DropdownDeviceState createState() => DropdownDeviceState(); } class DropdownDeviceState extends State { @override Widget build(BuildContext context) { SettingController controller = widget.controller; return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ PopupMenuButton( offset: const Offset(0, 40), onSelected: (String selectedValue) { setState(() { for (var value in controller.deviceList) { if (value.tid == int.parse(selectedValue)) { controller.currentDevice.value = value; break; } } }); }, itemBuilder: (BuildContext context) { return controller.deviceList .map>((DeviceItem value) { return PopupMenuItem( value: value.tid.toString(), child: Text(value.name), ); }).toList(); }, child: Container( padding: const EdgeInsets.symmetric( vertical: 5.0, horizontal: 10.0), // 设置按钮的内边距 decoration: BoxDecoration( border: Border.all(color: Colors.grey), borderRadius: BorderRadius.circular(5.0), ), child: Obx(() { String text = controller.currentDevice.value?.name ?? '请选择一个设备'; return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(text), const Icon(Icons.arrow_drop_down), ], ); }), ), ), ], ); } }