Move skills system documentation from bottom to top of CLAUDE.md for better organization. Refactor Flutter asset page by extracting UI components into separate files and updating import structure for improved modularity.
106 lines
3.1 KiB
Dart
106 lines
3.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:lucide_icons_flutter/lucide_icons.dart';
|
|
import 'package:shadcn_ui/shadcn_ui.dart';
|
|
import '../../../../core/theme/app_color_scheme.dart';
|
|
import '../../../../core/theme/app_spacing.dart';
|
|
import '../kyc_page.dart';
|
|
import '../welfare_center_page.dart';
|
|
import 'menu_group_container.dart';
|
|
import 'menu_row.dart';
|
|
import 'menu_trailing_widgets.dart';
|
|
|
|
/// 菜单分组1 - 福利中心 / 实名认证 / 安全设置 / 消息通知
|
|
class MenuGroup1 extends StatelessWidget {
|
|
final int kycStatus;
|
|
final void Function(String) onShowComingSoon;
|
|
|
|
const MenuGroup1({
|
|
super.key,
|
|
required this.kycStatus,
|
|
required this.onShowComingSoon,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final colorScheme = Theme.of(context).colorScheme;
|
|
final isDark = Theme.of(context).brightness == Brightness.dark;
|
|
|
|
return MenuGroupContainer(
|
|
child: Column(
|
|
children: [
|
|
// 福利中心
|
|
MenuRow(
|
|
icon: LucideIcons.gift,
|
|
iconColor: AppColorScheme.darkSecondary, // gold
|
|
title: '福利中心',
|
|
onTap: () {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(builder: (_) => const WelfareCenterPage()),
|
|
);
|
|
},
|
|
),
|
|
const MenuDivider(),
|
|
// 实名认证
|
|
MenuRow(
|
|
icon: LucideIcons.shieldCheck,
|
|
iconColor: AppColorScheme.getUpColor(isDark),
|
|
title: '实名认证',
|
|
trailing: KycBadge(kycStatus: kycStatus),
|
|
onTap: () {
|
|
if (kycStatus == 2) {
|
|
showKycStatusDialog(context);
|
|
} else {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(builder: (_) => const KycPage()),
|
|
);
|
|
}
|
|
},
|
|
),
|
|
const MenuDivider(),
|
|
// 安全设置
|
|
MenuRow(
|
|
icon: LucideIcons.lock,
|
|
iconColor: colorScheme.onSurfaceVariant,
|
|
title: '安全设置',
|
|
onTap: () => onShowComingSoon('安全设置'),
|
|
),
|
|
const MenuDivider(),
|
|
// 消息通知
|
|
MenuRow(
|
|
icon: LucideIcons.bell,
|
|
iconColor: colorScheme.onSurfaceVariant,
|
|
title: '消息通知',
|
|
trailing: const RedDotIndicator(),
|
|
onTap: () => onShowComingSoon('消息通知'),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
/// 显示 KYC 认证状态对话框
|
|
void showKycStatusDialog(BuildContext context) {
|
|
showShadDialog(
|
|
context: context,
|
|
builder: (ctx) => ShadDialog.alert(
|
|
title: Row(
|
|
children: [
|
|
Icon(Icons.check_circle, color: AppColorScheme.up, size: 20),
|
|
SizedBox(width: AppSpacing.sm),
|
|
const Text('实名认证'),
|
|
],
|
|
),
|
|
description: const Text('您的实名认证已通过'),
|
|
actions: [
|
|
ShadButton(
|
|
child: const Text('确定'),
|
|
onPressed: () => Navigator.of(ctx).pop(),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|