mirror of
				https://gitlab.com/foxixus/neomovies_mobile.git
				synced 2025-10-30 09:58:50 +05:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flutter/foundation.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| 
 | |
| class DeviceUtils {
 | |
|   /// Returns true if the device should be considered a tablet based on screen size.
 | |
|   /// Uses 600dp shortestSide threshold which is a common heuristic.
 | |
|   static bool isTablet(BuildContext context) {
 | |
|     final shortestSide = MediaQuery.of(context).size.shortestSide;
 | |
|     return shortestSide >= 600;
 | |
|   }
 | |
| 
 | |
|   /// Very naive Android TV detection. Treats a device as TV if it runs Android
 | |
|   /// and has extremely large width (>= 950dp) and is in landscape.
 | |
|   static bool isAndroidTv(BuildContext context) {
 | |
|     if (defaultTargetPlatform != TargetPlatform.android) return false;
 | |
|     final size = MediaQuery.of(context).size;
 | |
|     return size.shortestSide >= 950 && size.aspectRatio > 1.4;
 | |
|   }
 | |
| 
 | |
|   static bool isLargeScreen(BuildContext context) {
 | |
|     return isTablet(context) || isAndroidTv(context);
 | |
|   }
 | |
| 
 | |
|   /// Calculates responsive grid column count depending on screen width.
 | |
|   static int calculateGridCount(BuildContext context) {
 | |
|     final width = MediaQuery.of(context).size.width;
 | |
|     if (width >= 1400) return 6;
 | |
|     if (width >= 1200) return 5;
 | |
|     if (width >= 900) return 4;
 | |
|     if (width >= 600) return 3;
 | |
|     return 2;
 | |
|   }
 | |
| }
 |