173 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Dart
		
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Dart
		
	
	
| import 'package:flutter/material.dart';
 | |
| import 'dart:io';
 | |
| import 'package:flutter/services.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<FirstSignPage> createState() => _SignatureUpdatePageState();
 | |
| }
 | |
| 
 | |
| class _SignatureUpdatePageState extends State<FirstSignPage> {
 | |
|   String imagePath = "";
 | |
| 
 | |
| 
 | |
|   @override
 | |
|   void initState() {
 | |
|     super.initState();
 | |
| 
 | |
|     _getMySignature();
 | |
|   }
 | |
| 
 | |
| 
 | |
|   Future<void> _getMySignature() async {
 | |
| 
 | |
|     try {
 | |
|       final response = await ApiService.getMySignature( );
 | |
|       if (response['result'] == 'success') {
 | |
|         setState(() {
 | |
|           imagePath= ApiService.baseImgPath +response['IMGURL'];
 | |
|         });
 | |
|       }
 | |
| 
 | |
|     } catch (e) {
 | |
|      print("错误:${e.toString()}");
 | |
|     }
 | |
|   }
 | |
| 
 | |
| 
 | |
|   Future<void> 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'))
 | |
|                   Image.file(
 | |
|                     File(imagePath),
 | |
|                     width: 200,
 | |
|                     height: 100,
 | |
|                     fit: BoxFit.fill,
 | |
|                   ),
 | |
|                 if (imagePath.isNotEmpty&&imagePath.startsWith('http'))
 | |
|                   Image.network(
 | |
|                     imagePath,
 | |
|                     width: 200,
 | |
|                     height: 100,
 | |
|                     fit: BoxFit.fill,
 | |
|                   ),
 | |
| 
 | |
|               ],
 | |
|             ),
 | |
| 
 | |
|             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),
 | |
|         ),
 | |
|       ),
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 |