Files
monisuo/flutter_monisuo/lib/ui/pages/mine/components/profile_card.dart
2026-04-21 08:09:45 +08:00

86 lines
2.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:lucide_icons_flutter/lucide_icons.dart';
import '../../../../core/theme/app_theme.dart';
import 'avatar_circle.dart';
/// 用户资料卡片
class ProfileCard extends StatelessWidget {
final dynamic user;
const ProfileCard({super.key, required this.user});
@override
Widget build(BuildContext context) {
final colorScheme = Theme.of(context).colorScheme;
return Container(
width: double.infinity,
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: colorScheme.surface,
borderRadius: BorderRadius.circular(14),
border: Border.all(
color: colorScheme.outlineVariant.withValues(alpha: 0.5),
),
),
child: Row(
children: [
AvatarCircle(
radius: 22,
fontSize: 16,
text: user?.avatarText,
),
const SizedBox(width: 12),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
user?.username ?? '未登錄',
style: AppTextStyles.bodyLarge(context).copyWith(
fontWeight: FontWeight.w600,
),
),
const SizedBox(height: 2),
GestureDetector(
onTap: () {
Clipboard.setData(ClipboardData(text: '${user?.id ?? ''}'));
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('ID已复制'),
duration: Duration(seconds: 1),
),
);
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'ID: ${user?.id ?? ''}',
style: AppTextStyles.bodySmall(context).copyWith(
color: colorScheme.onSurfaceVariant,
),
),
const SizedBox(width: 4),
Icon(
LucideIcons.copy,
size: 12,
color: colorScheme.onSurfaceVariant,
),
],
),
),
],
),
),
Icon(
LucideIcons.chevronRight,
size: 16,
color: colorScheme.onSurfaceVariant,
),
],
),
);
}
}