import 'dart:io'; import 'package:flutter/material.dart'; import 'package:qhdkfq_regulatory_flutter/Custom/custom_button.dart'; import 'package:qhdkfq_regulatory_flutter/Custom/dashed_line_text.dart'; import 'package:qhdkfq_regulatory_flutter/Custom/edit_list_items.dart'; import 'package:qhdkfq_regulatory_flutter/Custom/help_department_person_item.dart'; import 'package:qhdkfq_regulatory_flutter/Custom/read_only_table.dart'; import 'package:qhdkfq_regulatory_flutter/tools/h_colors.dart'; import 'package:qhdkfq_regulatory_flutter/tools/my_appbar.dart'; import '../../Custom/photo_picker_row.dart'; enum HelpEditType { edit, help } class DangerEditPage extends StatefulWidget { const DangerEditPage(this.type, {Key? key}) : super(key: key); final HelpEditType type; @override State createState() => _DangerEditPageState(); } class _DangerEditPageState extends State { // 控制器列表 final _companyController = TextEditingController(text: '公司'); final _addressController = TextEditingController(); final _nameController = TextEditingController(text: '韩双'); final _phoneController = TextEditingController(); final _codeController = TextEditingController(); final _placeController = TextEditingController(); // 单选选项 final List _radioTitles = ['日常检查', '专项检查', '总和检查', '执法检查', '举报检查']; int _selectedType = 0; // 创建一个 GlobalKey 来拿到 State final _sectionKey = GlobalKey(); /// 帮扶时间 final String _helpTimeStr = "请选择"; @override void dispose() { _companyController.dispose(); _addressController.dispose(); _nameController.dispose(); _phoneController.dispose(); _codeController.dispose(); _placeController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { // 1. 基本信息字段 final basicFields = [ EditListItems.createRowSpaceBetweenItem( leftText: '公司名称', rightText: _companyController.text, isImportent: true, ), Divider(height: .5), EditListItems.createBuildMultilineInput( label: '地址', hint: '', controller: _addressController, isImportent: true, isVal: true, ), Divider(height: .5), EditListItems.createBuildMultilineInput( label: '姓名', hint: '', controller: _nameController, isImportent: true, ), Divider(height: .5), EditListItems.createBuildMultilineInput( label: '联系电话', hint: '', controller: _phoneController, isImportent: true, ), Divider(height: .5), EditListItems.createBuildMultilineInput( label: '编号', hint: '', controller: _codeController, isImportent: true, ), Divider(height: .5), EditListItems.createBuildMultilineInput( label: '场所', hint: '', controller: _placeController, isImportent: true, isVal: true, ), Divider(height: .5), EditListItems.createRadioRow( label: '检查类型', options: _radioTitles, selectedValue: _selectedType, onChanged: (v) => setState(() => _selectedType = v), isImportent: true, ), Divider(height: .5), EditListItems.createRowSpaceBetweenItem( leftText: "帮扶时间", isImportent: true, rightText: _helpTimeStr, isRight: true, onTap: () {}, ), Divider(height: .5), EditListItems.createYesNoSection( title: "邀请专家", yesLabel: "是", noLabel: "否", horizontalPadding: 0, verticalPadding: 0, groupValue: false, onChanged: (val) {}, ), Divider(height: .5), EditListItems.createRowSpaceBetweenItem( leftText: "现场照片", isImportent: true, rightText: "", isRight: false, ), MediaPickerRow( maxCount: 16, onChanged: (List images) { // images 列表更新 }, ), ]; // 帮扶内容标题 final helpHeader = Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ DashedLineText( text: '帮扶内容', lineColor: h_mainBlueColor(), textStyle: TextStyle(fontSize: 16, color: h_mainBlueColor()), ), SizedBox(height: 20), ], ); //按钮组 final buttons = Row( mainAxisAlignment: MainAxisAlignment.end, children: [ CustomButton( text: '选择标准', height: 35, backgroundColor: Colors.blue, onPressed: () {}, ), SizedBox(width: 8), CustomButton( text: '手动录入', height: 35, backgroundColor: Colors.blue, onPressed: () {}, ), ], ); final table = ReadOnlyTable( headers: ['序号', '内容来源', '隐患描述', '操作'], data: [ ['1', '政府部门', '示例内容', '合格'], ['2', '社会组织', '示例', '不合格'], ], onTapAction: (row) => print('点击表格第$row 行'), ); // 帮扶内容标题 final helpPersonHeader = Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ DashedLineText( text: '帮扶人员', lineColor: h_mainBlueColor(), textStyle: TextStyle(fontSize: 16, color: h_mainBlueColor()), ), SizedBox(height: 20), ], ); final helpPerson = Row( mainAxisAlignment: MainAxisAlignment.end, children: [ CustomButton( text: '添加', height: 35, backgroundColor: Colors.blue, onPressed: () { _sectionKey.currentState?.addEntry(); }, ), ], ); final dartPerson = HelpDeptPersonSection(key: _sectionKey); final danger = Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ DashedLineText( text: '隐患', lineColor: h_mainBlueColor(), textStyle: TextStyle(fontSize: 16, color: h_mainBlueColor()), ), SizedBox(height: 20), ], ); final dangerTable = ReadOnlyTable( headers: ['序号', '所属帮扶', '隐患描述', '操作'], data: [], ); final bottomButtons = Row( children: [ Expanded( child: CustomButton( text: "保存", backgroundColor: Colors.blue, height: 40, ), ), const SizedBox(width: 12), Expanded( child: CustomButton( text: "暂存", backgroundColor: Colors.green, height: 40, ), ), ], ); // 将所有部分按顺序拼起来 final children = [ // 基本信息标题 DashedLineText( text: '基本信息', lineColor: h_mainBlueColor(), textStyle: TextStyle(fontSize: 16, color: h_mainBlueColor()), ), SizedBox(height: 20), ...basicFields, SizedBox(height: 20), helpHeader, buttons, SizedBox(height: 10), table, SizedBox(height: 20), helpPersonHeader, helpPerson, SizedBox(height: 20), dartPerson, SizedBox(height: 20), danger, SizedBox(height: 20), dangerTable, SizedBox(height: 20), bottomButtons, ]; return Scaffold( backgroundColor: Colors.white, appBar: MyAppbar(title: widget.type == HelpEditType.help ? '监管帮扶' : '编辑'), body: SafeArea( child: Column( children: [ Expanded( child: ListView( padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 20), children: children, ), ), EditListItems.bottomTipWidget(), ], ), ), ); } }