marco.pms.mobile/lib/helpers/widgets/my_star_rating.dart
Vaibhav Surve 99902e743c Flutter application
- Created generated_plugin_registrant.cc and generated_plugin_registrant.h to manage plugin registration.
- Added generated_plugins.cmake for plugin configuration in CMake.
- Implemented CMakeLists.txt for the Windows runner, defining build settings and dependencies.
- Created Runner.rc for application resources including versioning and icons.
- Developed flutter_window.cpp and flutter_window.h to manage the Flutter window lifecycle.
- Implemented main.cpp as the entry point for the Windows application.
- Added resource.h for resource definitions.
- Included app icon in resources.
- Created runner.exe.manifest for application settings.
- Developed utils.cpp and utils.h for console management and command line argument handling.
- Implemented win32_window.cpp and win32_window.h for high DPI-aware window management.
2025-04-17 12:30:38 +05:30

68 lines
1.8 KiB
Dart

import 'package:flutter/material.dart';
class MyStarRating extends StatelessWidget {
final double rating, size, spacing;
final Color activeColor, inactiveColor;
final bool inactiveStarFilled, showInactive;
final IconData? activeIcon, halfIcon, inactiveIcon;
MyStarRating(
{super.key,
this.rating = 5,
this.size = 16,
this.spacing = 0,
this.activeColor = Colors.yellow,
this.inactiveColor = Colors.black,
this.inactiveStarFilled = false,
this.showInactive = true,
this.activeIcon,
this.halfIcon,
this.inactiveIcon});
@override
Widget build(BuildContext context) {
int ratingCount = rating.floor();
bool isHalf = (ratingCount != rating);
Color? color = getColorForRating(ratingCount);
List<Widget> stars = [];
for (int i = 0; i < 5; i++) {
if (i < ratingCount) {
stars.add(Icon(activeIcon ?? Icons.star, color: color, size: size));
stars.add(SizedBox(width: spacing));
} else {
if (isHalf) {
isHalf = false;
stars.add(
Icon(halfIcon ?? Icons.star_half_outlined,
color: color, size: size),
);
} else if (showInactive) {
stars.add(Icon(
inactiveStarFilled
? (activeIcon ?? Icons.star)
: (inactiveIcon ?? Icons.star_outline),
color: inactiveColor,
size: size,
));
}
stars.add(SizedBox(width: spacing));
}
}
return Row(mainAxisSize: MainAxisSize.min, children: stars);
}
Color? getColorForRating(int ratingCount) {
if (ratingCount <= 1) {
return Colors.red;
} else if (ratingCount <= 3) {
return Colors.orange;
} else if (ratingCount <= 5) {
return Colors.green;
} else {
return null;
}
}
}