- Created CMakeLists.txt for Flutter and runner components. - Implemented resource script (Runner.rc) for application metadata. - Developed main entry point (main.cpp) for the Windows application. - Added FlutterWindow class to manage the Flutter view within a Win32 window. - Implemented utility functions for console management and command line argument parsing. - Established Win32Window class for high DPI-aware window handling. - Included application icon and manifest for proper Windows integration. - Set up build configurations and dependencies for the Flutter application on Windows.
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
|     }
 | |
|   }
 | |
| }
 |