TIF_E41211115_Genso_quiz_app/lib/component/widget/recomendation_component.dart

84 lines
2.4 KiB
Dart

import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:quiz_app/component/quiz_container_component.dart';
import 'package:quiz_app/component/widget/container_skeleton_widget.dart';
import 'package:quiz_app/data/models/quiz/quiz_listing_model.dart';
class RecomendationComponent extends StatelessWidget {
final String title;
final List<QuizListingModel> datas;
final Function(String) itemOnTap;
final Function() allOnTap;
const RecomendationComponent({
required this.title,
required this.datas,
required this.itemOnTap,
required this.allOnTap,
super.key,
});
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildSectionTitle(context, title),
const SizedBox(height: 10),
datas.isNotEmpty
? ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: datas.length,
itemBuilder: (context, index) => QuizContainerComponent(
data: datas[index],
onTap: itemOnTap,
),
)
: ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: 3,
itemBuilder: (context, index) => ContainerSkeleton(),
)
],
);
}
// Widget _label() {
// return const Padding(
// padding: EdgeInsets.symmetric(horizontal: 16),
// child: Text(
// "Quiz Recommendation",
// style: TextStyle(
// fontSize: 18,
// fontWeight: FontWeight.bold,
// color: Color(0xFF172B4D), // dark text
// ),
// ),
// );
// }
Widget _buildSectionTitle(BuildContext context, String title) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
title,
style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
GestureDetector(
onTap: allOnTap,
child: Text(
context.tr('see_all'),
style: TextStyle(fontSize: 14, color: Colors.blue.shade700),
),
),
],
),
);
}
}