pile_nav_new/lib/pages/setting/project/view.dart
2024-11-15 17:42:52 +08:00

170 lines
5.2 KiB
Dart

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<SettingController>();
class ProjectView extends GetView<SettingController> {
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<DropdownProject> {
@override
Widget build(BuildContext context) {
SettingController controller = widget.controller;
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
PopupMenuButton<String>(
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<PopupMenuEntry<String>>((ProjectModel value) {
return PopupMenuItem<String>(
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<DropdownDevice> {
@override
Widget build(BuildContext context) {
SettingController controller = widget.controller;
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
PopupMenuButton<String>(
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<PopupMenuEntry<String>>((DeviceItem value) {
return PopupMenuItem<String>(
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),
],
);
}),
),
),
],
);
}
}