This commit is contained in:
sion
2026-04-07 01:05:05 +08:00
parent edad10ff06
commit 5ca1274607
83 changed files with 1561 additions and 1241 deletions

View File

@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
/// 信息行件(用于关于对话框)
/// 信息行件(用於關於對話框)
class InfoRow extends StatelessWidget {
final IconData icon;
final String text;

View File

@@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
/// 圆形头像组
/// 圓形頭像組
///
/// 示用首字母或默比特币符号。通 [radius] 控制大小,
/// [fontSize] 控制文字大小,[text] 可入用户头像文字。
/// 示用首字母或默比特幣符號。通 [radius] 控制大小,
/// [fontSize] 控制文字大小,[text] 可入用戶頭像文字。
class AvatarCircle extends StatelessWidget {
final double radius;
final double fontSize;

View File

@@ -3,7 +3,7 @@ import '../../../../core/theme/app_color_scheme.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
/// 退出登录按钮
/// 退出登錄按鈕
class LogoutButton extends StatelessWidget {
final VoidCallback onLogout;
const LogoutButton({super.key, required this.onLogout});
@@ -24,7 +24,7 @@ class LogoutButton extends StatelessWidget {
),
child: Center(
child: Text(
'退出登',
'退出登',
style: AppTextStyles.headlineMedium(context).copyWith(
color: AppColorScheme.down,
),

View File

@@ -10,7 +10,7 @@ import 'menu_group_container.dart';
import 'menu_row.dart';
import 'menu_trailing_widgets.dart';
/// 菜单分组1 - 福利中心 / 实名认证 / 安全置 / 消息通知
/// 菜單分組1 - 福利中心 / 實名認證 / 安全置 / 消息通知
class MenuGroup1 extends StatelessWidget {
final int kycStatus;
final void Function(String) onShowComingSoon;
@@ -39,11 +39,11 @@ class MenuGroup1 extends StatelessWidget {
},
),
const Divider(height: 1),
// 实名认证
// 實名認證
MenuRow(
icon: LucideIcons.shieldCheck,
iconColor: context.appColors.up,
title: '实名认证',
title: '實名認證',
trailing: KycBadge(kycStatus: kycStatus),
onTap: () {
if (kycStatus == 2) {
@@ -57,12 +57,12 @@ class MenuGroup1 extends StatelessWidget {
},
),
const Divider(height: 1),
// 安全
// 安全
MenuRow(
icon: LucideIcons.lock,
iconColor: context.colors.onSurfaceVariant,
title: '安全',
onTap: () => onShowComingSoon('安全'),
title: '安全',
onTap: () => onShowComingSoon('安全'),
),
const Divider(height: 1),
// 消息通知
@@ -79,7 +79,7 @@ class MenuGroup1 extends StatelessWidget {
}
}
/// 示 KYC 认证状态对话
/// 示 KYC 認證狀態對話
void showKycStatusDialog(BuildContext context) {
showShadDialog(
context: context,
@@ -88,13 +88,13 @@ void showKycStatusDialog(BuildContext context) {
children: [
Icon(Icons.check_circle, color: AppColorScheme.up, size: 20),
SizedBox(width: AppSpacing.sm),
const Text('实名认证'),
const Text('實名認證'),
],
),
description: const Text('您的实名认证已通'),
description: const Text('您的實名認證已通'),
actions: [
ShadButton(
child: const Text(''),
child: const Text(''),
onPressed: () => Navigator.of(ctx).pop(),
),
],

View File

@@ -4,7 +4,7 @@ import 'menu_group_container.dart';
import 'menu_row.dart';
import 'menu_trailing_widgets.dart';
/// 菜单分组2 - 深色模式 / 系统设置 / 关于我们
/// 菜單分組2 - 深色模式 / 系統設置 / 關於我們
class MenuGroup2 extends StatelessWidget {
final VoidCallback onShowAbout;
@@ -20,21 +20,21 @@ class MenuGroup2 extends StatelessWidget {
// 深色模式
const DarkModeRow(),
const Divider(height: 1),
// 系统设
// 系統設
MenuRow(
icon: LucideIcons.settings,
iconColor: colorScheme.onSurfaceVariant,
title: '统设',
title: '統設',
onTap: () {
// TODO: 系统设
// TODO: 系統設
},
),
const Divider(height: 1),
// 关于我们
// 關於我們
MenuRow(
icon: LucideIcons.info,
iconColor: colorScheme.onSurfaceVariant,
title: '关于我们',
title: '關於我們',
onTap: onShowAbout,
),
],

View File

@@ -2,10 +2,10 @@ import 'package:flutter/material.dart';
import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme_extension.dart';
/// 菜单分组容器 - 一的角卡片
/// 菜單分組容器 - 一的角卡片
///
/// 所有菜单分组共享相同的容器式:背景色、角、框。
/// 通 [child] 入菜单项 Column。
/// 所有菜單分組共享相同的容器式:背景色、角、框。
/// 通 [child] 入菜單項 Column。
class MenuGroupContainer extends StatelessWidget {
final Widget child;

View File

@@ -4,9 +4,9 @@ import '../../../../core/theme/app_spacing.dart';
import '../../../../core/theme/app_theme.dart';
import '../../../../core/theme/app_theme_extension.dart';
/// 行菜单项:图标 + 标题 + 尾部件 (chevron)
/// 行菜單項:圖標 + 標題 + 尾部件 (chevron)
///
/// 图标颜色 (通常是使用主色)
/// 圖標顏色 (通常是使用主色)
class MenuRow extends StatelessWidget {
final IconData icon;
final Color iconColor;

View File

@@ -7,12 +7,12 @@ import '../../../../core/theme/app_theme.dart';
import '../../../../core/theme/app_theme_extension.dart';
import '../../../../providers/theme_provider.dart';
/// KYC 状态徽章 (e.g. "已认证" green badge + chevron)
/// KYC 狀態徽章 (e.g. "已認證" green badge + chevron)
///
/// 根 [kycStatus] 示不同状态
/// - 2: 已认证(绿色)
/// - 1: 核中(橙色)
/// - 其他: 仅显示 chevron
/// 根 [kycStatus] 示不同狀態
/// - 2: 已認證(綠色)
/// - 1: 核中(橙色)
/// - 其他: 僅顯示 chevron
class KycBadge extends StatelessWidget {
final int kycStatus;
const KycBadge({super.key, required this.kycStatus});
@@ -32,7 +32,7 @@ class KycBadge extends StatelessWidget {
borderRadius: BorderRadius.circular(AppRadius.sm),
),
child: Text(
'认证',
'認證',
style: AppTextStyles.labelMedium(context).copyWith(
color: green,
),
@@ -59,7 +59,7 @@ class KycBadge extends StatelessWidget {
borderRadius: BorderRadius.circular(AppRadius.sm),
),
child: Text(
'核中',
'核中',
style: AppTextStyles.labelMedium(context).copyWith(
color: AppColorScheme.warning,
),
@@ -83,7 +83,7 @@ class KycBadge extends StatelessWidget {
}
}
/// 红点指示器 - 消息通知 + chevron
/// 紅點指示器 - 消息通知 + chevron
class RedDotIndicator extends StatelessWidget {
const RedDotIndicator({super.key});
@@ -111,7 +111,7 @@ class RedDotIndicator extends StatelessWidget {
}
}
/// 深色模式切
/// 深色模式切
class DarkModeRow extends StatelessWidget {
const DarkModeRow({super.key});

View File

@@ -5,7 +5,7 @@ import '../../../../core/theme/app_theme.dart';
import '../../../../core/theme/app_theme_extension.dart';
import 'avatar_circle.dart';
/// 用户资料卡片 - 像 + 用名 + 徽章 + chevron
/// 用戶資料卡片 - 像 + 用名 + 徽章 + chevron
class ProfileCard extends StatelessWidget {
final dynamic user;
const ProfileCard({super.key, required this.user});
@@ -37,12 +37,12 @@ class ProfileCard extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
user?.username ?? '未登',
user?.username ?? '未登',
style: AppTextStyles.headlineLarge(context),
),
const SizedBox(height: 4),
Text(
'普通用',
'普通用',
style: AppTextStyles.bodyMedium(context).copyWith(
fontWeight: FontWeight.normal,
),