import 'package:flutter/material.dart'; import 'package:qhdkfq_regulatory_flutter/mine/change_pass_page.dart'; import 'package:qhdkfq_regulatory_flutter/mine/message_page.dart'; import 'package:qhdkfq_regulatory_flutter/tools/tools.dart'; class MinePage extends StatefulWidget { const MinePage({super.key}); @override State createState() => _MinePageState(); } class _MinePageState extends State { // 设置项状态 bool notificationsEnabled = false; bool passwordChanged = false; bool updateAvailable = false; bool logoutSelected = false; @override Widget build(BuildContext context) { return Scaffold( body: SingleChildScrollView( // child: Padding( // padding: const EdgeInsets.all(24.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // 顶部标题区域 _buildHeaderSection(), const SizedBox(height: 15), // 标语区域 // _buildSloganSection(), // const SizedBox(height: 40), // 图片区 _buildCenterImage(), const SizedBox(height: 15), // 设置项列表 _buildSettingsList(), const SizedBox(height: 40), // 底部按钮 // _buildActionButton(), ], ), // ), ), ); } Widget _buildHeaderSection() { return Stack( alignment: const FractionalOffset(0.5, 1), children: [ Padding( padding: EdgeInsets.fromLTRB(0,0,0,30), child: Image.asset( "assets/images/bannerbg.png", width: MediaQuery.of(context).size.width, // 获取屏幕宽度 fit: BoxFit.cover, ) ), // 标语区域 _buildSloganSection(), const SizedBox(height: 40), ], // crossAxisAlignment: CrossAxisAlignment.start, // children: [ // const Text( // "齐津诚", // style: TextStyle( // fontSize: 28, // fontWeight: FontWeight.bold, // color: Color(0xFF1A237E), // ), // ), // const SizedBox(height: 8), // Text( // "齐津诚", // style: TextStyle( // fontSize: 18, // color: Colors.grey[700], // ), // ), // ], ); } Widget _buildSloganSection() { return Container( // padding: const EdgeInsets.all(24.0), margin: EdgeInsets.fromLTRB(24,0,24,0), padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 20), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(12), boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.1), spreadRadius: 2, blurRadius: 8, offset: const Offset(0, 4), ), ], ), child: Row( children: [ CircleAvatar( backgroundImage: AssetImage("assets/images/tx.png"), radius: 30, ), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( "用户名称", style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, color: Color(0xFF000000), ), ), Text( "用户简介", style: TextStyle( fontSize: 14, color: Colors.grey[600], ), ), ], ), ), ], ), ); } Widget _buildSettingsList() { return Container( margin: const EdgeInsets.fromLTRB(24,0,24,0), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.1), spreadRadius: 2, blurRadius: 8, offset: const Offset(0, 4), ), ], ), child: Column( children: [ // 通知提醒 _buildSettingItem( title: "通知提醒", icon: "assets/images/i2.png", value: notificationsEnabled, num:1, onChanged: (value) => setState(() => notificationsEnabled = value!), ), // const Divider(height: 1, indent: 60), // 修改密码 _buildSettingItem( title: "修改密码", icon: "assets/images/i3.png", value: passwordChanged, num:2, onChanged: (value) => setState(() => passwordChanged = value!), ), // const Divider(height: 1, indent: 60), // 版本更新 _buildSettingItem( title: "版本更新", icon: "assets/images/i5.png", value: updateAvailable, num:3, onChanged: (value) => setState(() => updateAvailable = value!), ), // const Divider(height: 1, indent: 60), // 退出登录 _buildSettingItem( title: "退出登录", icon: "assets/images/i4.png", value: logoutSelected, num:4, onChanged: (value) { setState(() => logoutSelected = value!); // if (value == true) { // _showLogoutConfirmation(); // } }, ), ], ), ); } Widget _buildSettingItem({ required String title, required String icon, required bool value, required int num, required ValueChanged onChanged, }) { return GestureDetector( onTap: () { switch(num){ case 1: pushPage(MessagePage(), context); break; case 2: pushPage(ChangePassPage(), context); break; case 3: break; case 4: _showLogoutConfirmation(); break; } }, child: ListTile( leading: Container( width: 20, height: 20, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(10), ), child: Image.asset(icon ,fit: BoxFit.cover, ), ), title: Text( title, style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w500), ), trailing: Transform.scale( scale: 1.2, child: Image.asset( "assets/images/right.png", fit: BoxFit.cover, width: 15, height: 15, ), ), ), ); } Widget _buildActionButton() { return SizedBox( width: double.infinity, child: ElevatedButton( onPressed: () { // 保存设置逻辑 _saveSettings(); }, style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF1A237E), foregroundColor: Colors.white, padding: const EdgeInsets.symmetric(vertical: 16), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), elevation: 3, // 注意:elevation应该放在styleFrom内部 ), child: const Text( "保存设置", style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600), ), ), ); } void _saveSettings() { // 这里可以添加保存设置到服务器的逻辑 ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: const Text("设置已保存成功"), backgroundColor: Colors.green[700], duration: const Duration(seconds: 2), behavior: SnackBarBehavior.floating, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), ), ); } void _showLogoutConfirmation() { showDialog( context: context, builder: (context) => AlertDialog( title: const Text("退出登录"), content: const Text("确定要退出登录吗?"), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), actions: [ ElevatedButton( onPressed: () { setState(() => logoutSelected = false); Navigator.pop(context); }, style: ElevatedButton.styleFrom( backgroundColor: Colors.grey[400], foregroundColor: Colors.white, ), child: const Text(" 取消 "), ), ElevatedButton( onPressed: () { // 执行退出登录操作 Navigator.pop(context); ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: const Text("您已成功退出登录"), backgroundColor: Colors.blue[700], duration: const Duration(seconds: 2), ), ); }, style: ElevatedButton.styleFrom( backgroundColor: Colors.blue[700], foregroundColor: Colors.white, ), child: const Text("确定退出"), ), ], ), ); } } Widget _buildCenterImage (){ return Stack( children: [ Container( margin: const EdgeInsets.fromLTRB(24,0,24,0), height: 100, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10.0), image: DecorationImage( image: AssetImage('assets/images/bg1.png'), fit: BoxFit.cover, ), ), ), Positioned( top: 25, left: 45, child: Text( "防范事故 保障安全", style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, color: Color(0xFF000000), ), ), ), Positioned( top: 55, left: 45, child: Text( "治理隐患,健康你我他", style: TextStyle( fontSize: 14, color: Colors.grey[600], ), ), ) ] ); }