import 'dart:io'; import 'package:flutter/material.dart'; import 'package:qhd_prevention/customWidget/ItemWidgetFactory.dart'; import 'package:qhd_prevention/customWidget/custom_button.dart'; import 'package:qhd_prevention/pages/my_appbar.dart'; import '../../../customWidget/photo_picker_row.dart'; class QuickReportPage extends StatefulWidget { const QuickReportPage({super.key}); @override State createState() => _QuickReportPageState(); } class _QuickReportPageState extends State { final _standardController = TextEditingController(); final _partController = TextEditingController(); final _dangerDetailController = TextEditingController(); final String _repairLevel = "请选择"; final String _repairType = "请选择"; final String _dangerOrganize = "请选择"; final String _dangerTime = "请选择"; late bool _isDanger = false; @override void dispose() { _standardController.dispose(); _partController.dispose(); _dangerDetailController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: MyAppbar(title: "隐患随手拍"), body: Column( children: [ // 详情滚动区域 _pageDetail(), // 底部警示文字,固定在页面底部 Container( padding: const EdgeInsets.all(15), color: Colors.white, child: Text( ' 严禁在本互联网非涉密平台处理、传输国家秘密和工作秘密,请确认扫描、传输的文件资料不涉及国家秘密和工作秘密', style: TextStyle(fontSize: 14, color: Colors.red), ), ), ], ), ); } Widget _buildSectionContainer({required Widget child}) { return Container( margin: const EdgeInsets.only(top: 10), color: Colors.white, padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 10), child: child, ); } Widget _pageDetail() { return Expanded( child: SingleChildScrollView( padding: const EdgeInsets.only(bottom: 20), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ _buildSectionContainer( child: RepairedPhotoSection( title: "隐患照片", maxCount: 4, mediaType: MediaType.image, isShowAI: true, onChanged: (List files) { // 上传图片 files }, onAiIdentify: () { // AI 识别逻辑 }, ), ), _buildSectionContainer( child: RepairedPhotoSection( title: "隐患视频", maxCount: 1, mediaType: MediaType.video, onChanged: (List files) { // 上传视频 files }, onAiIdentify: () { // AI 视频识别逻辑 }, ), ), _buildSectionContainer( child: ListItemFactory.createBuildMultilineInput( "隐患描述", "请对隐患进行详细描述(必填项)", _standardController, ), ), _buildSectionContainer( child: ListItemFactory.createBuildMultilineInput( "隐患部位", "请对隐患部位进行详细描述(必填项)", _partController, ), ), _buildSectionContainer( child: ListItemFactory.createRowSpaceBetweenItem( leftText: "隐患级别", rightText: _repairLevel, isRight: true, ), ), _buildSectionContainer( child: ListItemFactory.createRowSpaceBetweenItem( leftText: "隐患类型", rightText: _repairType, isRight: true, ), ), _buildSectionContainer( child: ListItemFactory.createYesNoSection( title: "是否立即整改", horizontalPadding: 0, verticalPadding: 0, yesLabel: "是", noLabel: "否", groupValue: _isDanger, onChanged: (val) { setState(() { _isDanger = val; }); }, ), ), if (_isDanger) Column( children: [ _buildSectionContainer( child: ListItemFactory.createBuildMultilineInput( "整改描述", "请对隐患进行整改描述(必填项)", _dangerDetailController, ), ), SizedBox(height: 10), _buildSectionContainer( child: RepairedPhotoSection( title: "整改后图片", maxCount: 4, horizontalPadding: 0, mediaType: MediaType.image, isShowAI: false, onChanged: (List files) { // 上传图片 files }, onAiIdentify: () {}, ), ), ], ), if (!_isDanger) Column( children: [ _buildSectionContainer( child: ListItemFactory.createRowSpaceBetweenItem( leftText: "整改责任部门", rightText: _dangerOrganize, isRight: true, ), ), _buildSectionContainer( child: ListItemFactory.createRowSpaceBetweenItem( leftText: "整改期限", rightText: _dangerTime, isRight: true, ), ), ], ), SizedBox(height: 30), CustomButton(text: "提交", backgroundColor: Colors.blue), ], ), ), ); } }