gcx/frontend/mobile/lib/features/profile/presentation/pages/settings_page.dart

108 lines
3.9 KiB
Dart

import 'package:flutter/material.dart';
import '../../../../app/theme/app_colors.dart';
import '../../../../app/theme/app_typography.dart';
/// 设置页面
///
/// 账号安全、通知、支付管理、语言、关于
class SettingsPage extends StatelessWidget {
const SettingsPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('设置')),
body: ListView(
children: [
// Account & Security
_buildSection('账号与安全', [
_buildTile('手机号', subtitle: '138****8888', icon: Icons.phone_rounded),
_buildTile('邮箱', subtitle: 'u***@email.com', icon: Icons.email_rounded),
_buildTile('修改密码', icon: Icons.lock_rounded),
_buildTile('身份认证', subtitle: 'L1 基础认证', icon: Icons.verified_user_rounded, onTap: () {}),
]),
// Payment
_buildSection('支付管理', [
_buildTile('支付方式', subtitle: 'Visa •••• 4242', icon: Icons.credit_card_rounded),
_buildTile('银行账户', subtitle: 'BoA •••• 6789', icon: Icons.account_balance_rounded),
_buildTile('支付密码', icon: Icons.password_rounded),
]),
// Notifications
_buildSection('通知设置', [
_buildSwitchTile('交易通知', true),
_buildSwitchTile('到期提醒', true),
_buildSwitchTile('行情变动', false),
_buildSwitchTile('营销推送', false),
]),
// General
_buildSection('通用', [
_buildTile('语言', subtitle: '简体中文', icon: Icons.language_rounded),
_buildTile('货币', subtitle: 'USD', icon: Icons.attach_money_rounded),
_buildTile('清除缓存', icon: Icons.cleaning_services_rounded),
]),
// About
_buildSection('关于', [
_buildTile('版本', subtitle: 'v1.0.0', icon: Icons.info_outline_rounded),
_buildTile('用户协议', icon: Icons.description_rounded),
_buildTile('隐私政策', icon: Icons.privacy_tip_rounded),
_buildTile('帮助中心', icon: Icons.help_outline_rounded),
]),
// Logout
Padding(
padding: const EdgeInsets.all(20),
child: OutlinedButton(
onPressed: () {},
style: OutlinedButton.styleFrom(
foregroundColor: AppColors.error,
side: const BorderSide(color: AppColors.error),
minimumSize: const Size(double.infinity, 48),
),
child: const Text('退出登录'),
),
),
],
),
);
}
Widget _buildSection(String title, List<Widget> children) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(20, 20, 20, 8),
child: Text(title, style: AppTypography.labelSmall),
),
Container(
color: AppColors.surface,
child: Column(children: children),
),
],
);
}
Widget _buildTile(String title, {String? subtitle, IconData? icon, VoidCallback? onTap}) {
return ListTile(
leading: icon != null ? Icon(icon, size: 22, color: AppColors.textSecondary) : null,
title: Text(title, style: AppTypography.bodyMedium),
subtitle: subtitle != null ? Text(subtitle, style: AppTypography.caption) : null,
trailing: const Icon(Icons.chevron_right_rounded, size: 20, color: AppColors.textTertiary),
onTap: onTap ?? () {},
);
}
Widget _buildSwitchTile(String title, bool value) {
return SwitchListTile(
title: Text(title, style: AppTypography.bodyMedium),
value: value,
onChanged: (_) {},
activeColor: AppColors.primary,
);
}
}