Files
Eventify-frontend/lib/features/reviews/widgets/star_rating_input.dart

57 lines
1.6 KiB
Dart
Raw Normal View History

// lib/features/reviews/widgets/star_rating_input.dart
import 'package:flutter/material.dart';
class StarRatingInput extends StatelessWidget {
final int rating;
final ValueChanged<int> onRatingChanged;
final double starSize;
const StarRatingInput({
Key? key,
required this.rating,
required this.onRatingChanged,
this.starSize = 36,
}) : super(key: key);
static const _labels = ['', 'Poor', 'Fair', 'Good', 'Very Good', 'Excellent'];
static const _starGold = Color(0xFFFBBF24);
static const _starEmpty = Color(0xFFD1D5DB);
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisSize: MainAxisSize.min,
children: List.generate(5, (i) {
final starIndex = i + 1;
return GestureDetector(
onTap: () => onRatingChanged(starIndex),
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 2),
child: Icon(
starIndex <= rating ? Icons.star_rounded : Icons.star_outline_rounded,
size: starSize,
color: starIndex <= rating ? _starGold : _starEmpty,
),
),
);
}),
),
if (rating > 0) ...[
const SizedBox(height: 4),
Text(
_labels[rating],
style: TextStyle(
fontSize: 13,
fontWeight: FontWeight.w600,
color: _starGold,
),
),
],
],
);
}
}