63 lines
2.2 KiB
Dart
63 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
import 'package:smpn1_lengkong/core/constants/app_colors.dart';
|
|
|
|
class ProfileClassCard extends StatelessWidget {
|
|
final String className;
|
|
final String academicYear;
|
|
final bool isSelected;
|
|
final bool isCurrent;
|
|
final VoidCallback onTap;
|
|
|
|
const ProfileClassCard({
|
|
super.key,
|
|
required this.className,
|
|
required this.academicYear,
|
|
required this.isSelected,
|
|
required this.onTap,
|
|
this.isCurrent = false,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return GestureDetector(
|
|
onTap: onTap,
|
|
child: Container(
|
|
margin: EdgeInsets.only(bottom: 12.h),
|
|
padding: EdgeInsets.all(16.w),
|
|
decoration: BoxDecoration(
|
|
color: Colors.white,
|
|
borderRadius: BorderRadius.circular(12.r),
|
|
border: Border.all(color: isSelected ? AppColors.primaryBlue : Colors.grey.shade200, width: isSelected ? 2 : 1),
|
|
),
|
|
child: Row(
|
|
children: [
|
|
Container(
|
|
padding: EdgeInsets.all(8.w),
|
|
decoration: BoxDecoration(
|
|
color: isCurrent ? AppColors.successGreen.withOpacity(0.1) : AppColors.primaryBlue.withOpacity(0.1),
|
|
borderRadius: BorderRadius.circular(8.r),
|
|
),
|
|
child: Icon(
|
|
isCurrent ? Icons.star_rounded : Icons.history_edu_rounded,
|
|
color: isCurrent ? AppColors.successGreen : AppColors.primaryBlue,
|
|
size: 20.sp,
|
|
),
|
|
),
|
|
SizedBox(width: 16.w),
|
|
Expanded(
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Text("Kelas $className", style: const TextStyle(fontWeight: FontWeight.bold)),
|
|
Text("TA $academicYear", style: const TextStyle(color: Colors.grey, fontSize: 12)),
|
|
],
|
|
),
|
|
),
|
|
if (isSelected) const Icon(Icons.check_circle, color: AppColors.primaryBlue) else const Icon(Icons.arrow_forward_ios, size: 14, color: Colors.grey),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
} |