import 'package:flutter/material.dart'; import '../../../core/theme/app_colors.dart'; import '../../../core/theme/app_text_styles.dart'; import '../../../core/theme/app_dimensions.dart'; /// 学习偏好卡片组件 class LearningPreferencesCard extends StatelessWidget { final String title; final Widget child; final EdgeInsetsGeometry? padding; final VoidCallback? onTap; final IconData? icon; const LearningPreferencesCard({ super.key, required this.title, required this.child, this.padding, this.onTap, this.icon, }); @override Widget build(BuildContext context) { return Container( width: double.infinity, decoration: BoxDecoration( color: AppColors.surface, borderRadius: BorderRadius.circular(AppDimensions.radiusMd), border: Border.all( color: AppColors.primary.withOpacity(0.1), width: 1, ), boxShadow: [ BoxShadow( color: AppColors.shadow.withOpacity(0.05), blurRadius: 8, offset: const Offset(0, 2), ), ], ), child: Material( color: Colors.transparent, child: InkWell( onTap: onTap, borderRadius: BorderRadius.circular(AppDimensions.radiusMd), child: Padding( padding: padding ?? const EdgeInsets.all(AppDimensions.spacingMd), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // 标题行 Row( children: [ if (icon != null) ...[ Container( padding: const EdgeInsets.all(AppDimensions.spacingSm), decoration: BoxDecoration( color: AppColors.primary.withOpacity(0.1), borderRadius: BorderRadius.circular(AppDimensions.radiusSm), ), child: Icon( icon, color: AppColors.primary, size: 20, ), ), const SizedBox(width: AppDimensions.spacingSm), ], Expanded( child: Text( title, style: AppTextStyles.titleMedium.copyWith( color: AppColors.onSurface, fontWeight: FontWeight.w600, ), ), ), if (onTap != null) Icon( Icons.chevron_right, color: AppColors.onSurfaceVariant, size: 20, ), ], ), const SizedBox(height: AppDimensions.spacingMd), // 内容 child, ], ), ), ), ), ); } }