import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import '../../controller/mine/auth_controller.dart'; class RealNamePage extends StatelessWidget { RealNamePage({super.key}); final AuthController controller = Get.put(AuthController()); // 是否同意协议 final agreeTerms = Rx(false); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Color(0xffFFFFFF), appBar: AppBar( title: Text('实名认证', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), centerTitle: true, leading: IconButton( icon: Icon(Icons.arrow_back_ios, size: 24, color: Colors.grey,), onPressed: () { Get.back(); }, ), ), body: Column( children: [ Container( height: 48, decoration: BoxDecoration(color: Color(0xffE7E7E7)), padding: const EdgeInsets.only(left: 16), child: Row( crossAxisAlignment: CrossAxisAlignment.center, // 垂直居中 children: [ Text( '*请填写本人实名信息', style: TextStyle( fontSize: 14, color: Colors.black87, ), ), ], ), ), Container( height: 56, // 固定高度确保垂直居中 decoration: BoxDecoration( border: Border( bottom: BorderSide( color: Colors.grey[400]!, width: 0.5, ), ), ), child: Row( crossAxisAlignment: CrossAxisAlignment.center, // 垂直居中 children: [ // 左侧标签 - 固定宽度 + 垂直居中 Container( width: 100, alignment: Alignment.centerLeft, padding: const EdgeInsets.only(left: 16), child: Text( '姓名:', style: TextStyle( fontSize: 15, color: Colors.black87, ), ), ), SizedBox(width: 12), // 输入框区域 - 使用Expanded填充剩余空间 Expanded( child: Container( alignment: Alignment.centerLeft, // 输入框内容垂直居中 child: TextField( decoration: InputDecoration( hintText: '请输入姓名', hintStyle: TextStyle(color: Colors.grey[500]), border: InputBorder.none, // 隐藏默认边框 contentPadding: EdgeInsets.zero, // 去除默认padding isDense: true, // 紧凑模式 ), style: TextStyle( fontSize: 15, height: 1.2, // 控制文字垂直位置 ), ), ), ), ], ), ), // SizedBox(height: 30), Container( height: 56, // 固定高度确保垂直居中 decoration: BoxDecoration( border: Border( bottom: BorderSide( color: Colors.grey[400]!, width: 0.5, ), ), ), child: Row( crossAxisAlignment: CrossAxisAlignment.center, // 垂直居中 children: [ // 左侧标签 - 固定宽度 + 垂直居中 Container( width: 100, alignment: Alignment.centerLeft, padding: const EdgeInsets.only(left: 16), child: Text( '身份证号:', style: TextStyle( fontSize: 15, color: Colors.black87, ), ), ), SizedBox(width: 12), // 输入框区域 - 使用Expanded填充剩余空间 Expanded( child: Container( alignment: Alignment.centerLeft, // 输入框内容垂直居中 child: TextField( decoration: InputDecoration( hintText: '请输入身份证号', hintStyle: TextStyle(color: Colors.grey[500]), border: InputBorder.none, // 隐藏默认边框 contentPadding: EdgeInsets.zero, // 去除默认padding isDense: true, // 紧凑模式 ), style: TextStyle( fontSize: 15, height: 1.2, // 控制文字垂直位置 ), ), ), ), ], ), ), SizedBox(height: 24), // 协议同意复选框 Row( crossAxisAlignment: CrossAxisAlignment.start, // 垂直居中 children: [ SizedBox(width: 8), Obx(() => Checkbox( value: agreeTerms.value, onChanged: (value) { agreeTerms.value = value ?? false; }, activeColor: Color(0xff7562F9), side: const BorderSide(color: Colors.grey), shape: const CircleBorder(), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, )), ConstrainedBox( constraints: BoxConstraints(maxWidth: 300), // 限制最大宽度 child: Text( '前排吃瓜,这里的瓜包新鲜,这里的人士有料有梗有灼见~,这里的瓜包新鲜,这里的人士有料有梗有灼见~', style: TextStyle( fontSize: 13, color: Colors.grey ), ), ) ], ), SizedBox(height: 48), Container( padding: const EdgeInsets.only(left: 24, right: 24), child: ElevatedButton( onPressed: controller.isLoggingIn.value ? null : () { // 登录逻辑 if (!agreeTerms.value) { SmartDialog.showToast('请同意用户协议和隐私政策'); return; } // 调用控制器的登录方法 controller.login(); }, style: ElevatedButton.styleFrom( minimumSize: const Size(double.infinity, 50), backgroundColor: agreeTerms.value ? const Color(0xff7562F9) : Colors.grey.shade300, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(25), ), elevation: 0, ), child: controller.isLoggingIn.value ? const SizedBox( width: 20, height: 20, child: CircularProgressIndicator( color: Colors.white, strokeWidth: 1, ), ) : const Text( '立即认证', style: TextStyle( fontSize: 16, fontWeight: FontWeight.bold, color: Colors.white, ), ), ), ) ], ), ); } }