import 'package:flutter/material.dart'; import 'package:flutter_common/utils/sp_utils.dart'; import 'package:flutter_common/widget/common_widget.dart'; import 'package:flutter_common/widget/dialog_widget.dart'; import 'package:food_hub_app/provider/app_provider.dart'; import 'package:food_hub_app/provider/user_provider.dart'; import 'package:food_hub_app/widgets/profile/basic_info.dart'; import 'package:provider/provider.dart'; class ProfilePage extends StatefulWidget { const ProfilePage({super.key}); @override State createState() => ProfilePageState(); } class ProfilePageState extends State { @override void initState() { super.initState(); // 初始化加载数据 WidgetsBinding.instance.addPostFrameCallback((_) { context.read().refreshUser(SPUtil.getInt('userId')); }); } Widget _buildFunctionButton({ required IconData icon, required String text, required VoidCallback onTap, }) { final colors = Theme.of(context).colorScheme; return ListTile( contentPadding: EdgeInsets.zero, leading: Icon(icon, color: colors.primary), title: Text(text), trailing: Icon(Icons.arrow_forward_ios, size: 16, color: colors.primary), onTap: onTap, ); } void _onTapMoment() { Navigator.pushNamed(context, '/momentUser'); } Widget _buildFunctionButtons() { return CommonCard( child: Column( children: [ _buildFunctionButton( icon: Icons.account_circle, text: '基本资料', onTap: () { // 跳转到编辑资料页面 // LogUtils.i('点击编辑资料'); }, ), const Divider(height: 1), _buildFunctionButton( icon: Icons.group_outlined, text: '朋友圈', onTap: _onTapMoment, ), const Divider(height: 1), _buildFunctionButton( icon: Icons.favorite, text: '我的收藏', onTap: () { // 跳转到浏览历史页面 // LogUtils.i('点击浏览历史'); }, ), const Divider(height: 1), _buildFunctionButton( icon: Icons.lock, text: '更改密码', onTap: () { // 跳转到帮助与反馈页面 // LogUtils.i('点击帮助与反馈'); }, ), const Divider(height: 1), _buildFunctionButton(icon: Icons.message, text: '反馈意见', onTap: () {}), const Divider(height: 1), _buildFunctionButton(icon: Icons.refresh, text: '检查更新', onTap: () {}), const Divider(height: 1), _buildFunctionButton( icon: Icons.exit_to_app, text: '退出登录', onTap: _onTapLogout, ), ], ), ); } void _onTapLogout() async { final result = await showConfirmDialog(context, '确认要退出吗?'); if (result == true) { SPUtil.remove('token'); Navigator.pop(context); Navigator.pushNamed(context, '/login'); } } Widget _buildVersionInfo() { final provider = context.read(); return Text( '版本 v${provider.fullVersion}', textAlign: TextAlign.center, style: TextStyle( fontSize: 12, color: Theme.of(context).colorScheme.primary, ), ); } Widget _buildContent(UserProvider provider) { final user = provider.currentUser; return Column( children: [ SizedBox(width: double.infinity, child: ProfileInfo(user: user)), const SizedBox(height: 16), _buildFunctionButtons(), const SizedBox(height: 8), _buildVersionInfo(), ], ); } @override Widget build(BuildContext context) { final provider = context.watch(); return Stack( children: [ if (provider.isLoading) buildLoadingIndicator() else if (provider.error.isNotEmpty) Text(provider.error) else _buildContent(provider), ], ); } }