rwadurian/frontend/mining-app/lib/presentation/pages/profile/help_center_page.dart

277 lines
9.2 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
/// 帮助中心页面
class HelpCenterPage extends StatelessWidget {
const HelpCenterPage({super.key});
static const Color _orange = Color(0xFFFF6B00);
static const Color _darkText = Color(0xFF1F2937);
static const Color _grayText = Color(0xFF6B7280);
static const Color _bgGray = Color(0xFFF3F4F6);
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: _bgGray,
appBar: AppBar(
backgroundColor: Colors.white,
elevation: 0,
leading: IconButton(
icon: const Icon(Icons.arrow_back_ios, color: _darkText, size: 20),
onPressed: () => context.pop(),
),
title: const Text(
'帮助中心',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.w600,
color: _darkText,
),
),
centerTitle: true,
),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 16),
// 常见问题分类
_buildSection('常见问题', [
_FAQItem(
question: '如何参与?',
answer: '在首页点击"去参与"按钮,选择参与数量和支付方式,完成支付后即可参与成功。参与成功后,您将获得对应的贡献值。',
),
_FAQItem(
question: '贡献值是什么?',
answer: '贡献值是您在平台参与后获得的一种权益凭证。贡献值越高您每日可获得的积分股分配越多。贡献值有效期为730天。',
),
_FAQItem(
question: '如何获得积分股?',
answer: '系统每日会根据您的贡献值占比,自动分配积分股到您的账户。积分股可用于兑换或交易。',
),
_FAQItem(
question: '积分值和积分股有什么区别?',
answer: '积分股是通过贡献值分配获得的,可用于卖出兑换。积分值是一种通用积分,可以转账给其他用户。两者用途不同,请注意区分。',
),
]),
const SizedBox(height: 16),
_buildSection('交易相关', [
_FAQItem(
question: '如何卖出积分股?',
answer: '进入"兑换"页面输入要卖出的积分股数量确认后即可完成卖出。卖出时会扣除10%进入积分股池。',
),
_FAQItem(
question: '卖出积分股为什么要扣除10%',
answer: '卖出积分股时10%会进入积分股池,用于系统生态建设和价值稳定。这是系统规则的一部分。',
),
_FAQItem(
question: '如何发送积分值给其他用户?',
answer: '进入"资产"页面,点击"发送"按钮,输入对方手机号和转账金额,确认后即可完成转账。注意:积分值转账不可撤销。',
),
]),
const SizedBox(height: 16),
_buildSection('账户安全', [
_FAQItem(
question: '如何修改登录密码?',
answer: '进入"我的"页面,点击"账户安全",可以修改登录密码。建议定期更换密码以确保账户安全。',
),
_FAQItem(
question: '忘记密码怎么办?',
answer: '在登录页面点击"忘记密码",通过手机号验证后可以重置密码。',
),
]),
const SizedBox(height: 16),
_buildSection('团队收益', [
_FAQItem(
question: '如何邀请好友?',
answer: '您的手机号就是您的邀请码。好友注册时填写您的手机号作为邀请人,即可建立引荐关系。',
),
_FAQItem(
question: '团队收益如何计算?',
answer: '当您引荐的好友参与后,您将获得团队下贡献值奖励。引荐的用户越多、参与数量越多,您的团队收益越高。',
),
]),
const SizedBox(height: 16),
// 联系客服
_buildContactSection(context),
const SizedBox(height: 24),
],
),
),
);
}
Widget _buildSection(String title, List<_FAQItem> items) {
return Container(
margin: const EdgeInsets.symmetric(horizontal: 16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.fromLTRB(16, 16, 16, 8),
child: Row(
children: [
Container(
width: 4,
height: 16,
decoration: BoxDecoration(
color: _orange,
borderRadius: BorderRadius.circular(2),
),
),
const SizedBox(width: 8),
Text(
title,
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
color: _darkText,
),
),
],
),
),
...items.asMap().entries.map((entry) {
final isLast = entry.key == items.length - 1;
return _buildFAQTile(entry.value, showDivider: !isLast);
}),
],
),
);
}
Widget _buildFAQTile(_FAQItem item, {bool showDivider = true}) {
return Theme(
data: ThemeData(
dividerColor: Colors.transparent,
),
child: Column(
children: [
ExpansionTile(
tilePadding: const EdgeInsets.symmetric(horizontal: 16),
childrenPadding: const EdgeInsets.fromLTRB(16, 0, 16, 16),
title: Text(
item.question,
style: const TextStyle(
fontSize: 14,
color: _darkText,
),
),
iconColor: _orange,
collapsedIconColor: _grayText,
children: [
Text(
item.answer,
style: TextStyle(
fontSize: 13,
color: _grayText.withOpacity(0.9),
height: 1.5,
),
),
],
),
if (showDivider)
const Divider(height: 1, indent: 16, endIndent: 16),
],
),
);
}
Widget _buildContactSection(BuildContext context) {
return Container(
margin: const EdgeInsets.symmetric(horizontal: 16),
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Container(
width: 4,
height: 16,
decoration: BoxDecoration(
color: _orange,
borderRadius: BorderRadius.circular(2),
),
),
const SizedBox(width: 8),
const Text(
'联系我们',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.bold,
color: _darkText,
),
),
],
),
const SizedBox(height: 16),
Text(
'如果您有其他问题,可以通过以下方式联系我们:',
style: TextStyle(
fontSize: 13,
color: _grayText.withOpacity(0.9),
),
),
const SizedBox(height: 16),
_buildContactItem(
icon: Icons.email_outlined,
label: '客服邮箱',
value: 'support@guhang.com',
),
const SizedBox(height: 12),
_buildContactItem(
icon: Icons.access_time,
label: '服务时间',
value: '周一至周五 9:00-18:00',
),
],
),
);
}
Widget _buildContactItem({
required IconData icon,
required String label,
required String value,
}) {
return Row(
children: [
Icon(icon, size: 20, color: _orange),
const SizedBox(width: 12),
Text(
'$label: ',
style: const TextStyle(
fontSize: 13,
color: _grayText,
),
),
Text(
value,
style: const TextStyle(
fontSize: 13,
color: _darkText,
fontWeight: FontWeight.w500,
),
),
],
);
}
}
class _FAQItem {
final String question;
final String answer;
_FAQItem({required this.question, required this.answer});
}