import 'package:flutter/material.dart'; import 'dart:io'; import 'package:flutter/services.dart'; import 'package:qhd_prevention/customWidget/single_image_viewer.dart'; import 'package:qhd_prevention/customWidget/toast_util.dart'; import 'package:qhd_prevention/http/ApiService.dart'; import 'package:qhd_prevention/pages/my_appbar.dart'; import '../../tools/tools.dart'; import 'mine_sign_page.dart'; class FirstSignPage extends StatefulWidget { const FirstSignPage({super.key}); @override State createState() => _SignatureUpdatePageState(); } class _SignatureUpdatePageState extends State { String imagePath = ""; @override void initState() { super.initState(); _getMySignature(); } Future _getMySignature() async { try { final response = await ApiService.getMySignature( ); if (response['result'] == 'success') { setState(() { imagePath= ApiService.baseImgPath +response['IMGURL']; }); } } catch (e) { print("错误:${e.toString()}"); } } Future refreshSign() async { if (imagePath.isEmpty) { ToastUtil.showNormal(context, '请签字'); return; } if(imagePath.startsWith('http')){ ToastUtil.showSuccess(context, '保存成功'); Navigator.pop(context); return; } LoadingDialogHelper.show(); final result = await ApiService.refreshSignInfo(imagePath); LoadingDialogHelper.hide(); if (result['result'] == 'success') { ToastUtil.showSuccess(context, '保存成功'); Navigator.pop(context); } } @override Widget build(BuildContext context) { return Scaffold( appBar: MyAppbar(title: "更新签字信息"), body: Container( margin: EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text("用户", style: TextStyle(color: Colors.black, fontSize: 16)), _buildConfirmButton(), ], ), const SizedBox(height: 8), Row( children: [ if (imagePath.isNotEmpty) Text( '签字照片:', style: TextStyle( fontSize: 14, fontWeight: FontWeight.bold, color: Colors.grey, ), ), const SizedBox(width: 15), if (imagePath.isNotEmpty&&!imagePath.startsWith('http')) GestureDetector( onTap: () { presentOpaque(SingleImageViewer(imageUrl: imagePath), context); }, child: Image.file( File(imagePath), width: 200, height: 100, fit: BoxFit.contain , ), ), if (imagePath.isNotEmpty&&imagePath.startsWith('http')) GestureDetector( onTap: () { presentOpaque(SingleImageViewer(imageUrl: imagePath), context); }, child: Image.network( imagePath, width: 200, height: 100, fit: BoxFit.contain , ), ), ], ), const SizedBox(height: 8), // 确认按钮 // const Spacer(), _buildTrueButton(), ], ), ), ); } Widget _buildTrueButton() { return Center( child: ElevatedButton( onPressed: () { refreshSign(); }, style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF4285F4), padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 80), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), child: Text('确认', style: TextStyle(fontSize: 14, color: Colors.white)), ), ); } Widget _buildConfirmButton() { return SizedBox( width: 80, height: 30, child: ElevatedButton( onPressed: () async { await NativeOrientation.setLandscape(); final path = await Navigator.push( context, MaterialPageRoute(builder: (context) => MineSignPage()), ); await NativeOrientation.setPortrait(); // 更新状态(当子页面关闭时) setState(() { imagePath = path ?? ''; }); }, style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF4285F4), padding: const EdgeInsets.symmetric(vertical: 5), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), child: Text( '手写签字', style: TextStyle(fontSize: 12, color: Colors.white), ), ), ); } }