This commit is contained in:
sion
2026-03-30 00:30:42 +08:00
parent 41c1288616
commit 2a901de2c3
27 changed files with 1324 additions and 650 deletions

View File

@@ -6,11 +6,13 @@ import 'package:google_fonts/google_fonts.dart';
import '../../../core/theme/app_color_scheme.dart';
import '../../../core/theme/app_spacing.dart';
import '../../../providers/asset_provider.dart';
import '../../../providers/auth_provider.dart';
import '../../shared/ui_constants.dart';
import '../../components/glass_panel.dart';
import '../../components/neon_glow.dart';
import '../orders/fund_orders_page.dart';
import 'transfer_page.dart';
import '../mine/kyc_page.dart';
/// 资产页面 - Material Design 3 风格
class AssetPage extends StatefulWidget {
@@ -897,6 +899,13 @@ class _WalletAddressCard extends StatelessWidget {
}
void _showWithdrawDialog(BuildContext context, String? balance) {
// KYC校验未完成实名认证则引导去认证
final auth = context.read<AuthProvider>();
if (auth.user?.kycStatus != 2) {
_showKycRequiredDialog(context);
return;
}
final amountController = TextEditingController();
final addressController = TextEditingController();
final contactController = TextEditingController();
@@ -1109,23 +1118,17 @@ void _showResultDialog(BuildContext context, String title, String? message) {
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
title,
style: GoogleFonts.spaceGrotesk(
fontSize: 20,
fontWeight: FontWeight.bold,
color: colorScheme.onSurface,
),
),
Text(title,
style: GoogleFonts.spaceGrotesk(
fontSize: 20,
fontWeight: FontWeight.bold,
color: colorScheme.onSurface,
)),
if (message != null) ...[
SizedBox(height: AppSpacing.sm),
Text(
message,
style: TextStyle(
color: colorScheme.onSurfaceVariant,
),
textAlign: TextAlign.center,
),
Text(message,
style: TextStyle(color: colorScheme.onSurfaceVariant),
textAlign: TextAlign.center),
],
SizedBox(height: AppSpacing.lg),
SizedBox(
@@ -1144,3 +1147,85 @@ void _showResultDialog(BuildContext context, String title, String? message) {
),
);
}
void _showKycRequiredDialog(BuildContext context) {
final colorScheme = Theme.of(context).colorScheme;
showShadDialog(
context: context,
builder: (ctx) => Dialog(
backgroundColor: Colors.transparent,
child: GlassPanel(
borderRadius: BorderRadius.circular(AppRadius.xxl),
padding: EdgeInsets.all(AppSpacing.lg),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
padding: EdgeInsets.all(AppSpacing.md),
decoration: BoxDecoration(
color: AppColorScheme.warning.withOpacity(0.1),
shape: BoxShape.circle,
),
child: Icon(
LucideIcons.shieldAlert,
color: AppColorScheme.warning,
size: 32,
),
),
SizedBox(height: AppSpacing.md),
Text(
'需要实名认证',
style: GoogleFonts.spaceGrotesk(
fontSize: 20,
fontWeight: FontWeight.bold,
color: colorScheme.onSurface,
),
),
SizedBox(height: AppSpacing.sm),
Text(
'提现前请先完成实名认证,保障账户安全',
style: TextStyle(
color: colorScheme.onSurfaceVariant,
fontSize: 14,
),
textAlign: TextAlign.center,
),
SizedBox(height: AppSpacing.lg),
Row(
children: [
Expanded(
child: NeonButton(
text: '取消',
type: NeonButtonType.outline,
onPressed: () => Navigator.of(ctx).pop(),
height: 44,
showGlow: false,
),
),
SizedBox(width: AppSpacing.sm),
Expanded(
child: NeonButton(
text: '去认证',
type: NeonButtonType.primary,
onPressed: () {
Navigator.of(ctx).pop();
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => const KycPage(returnToWithdraw: true),
),
);
},
height: 44,
showGlow: true,
),
),
],
),
],
),
),
),
);
}