Ahmed Fwela

fix responsiveValue 2

1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:flutter/widgets.dart'; 2 import 'package:flutter/widgets.dart';
3 - 3 +import 'package:collection/collection.dart';
4 import '../platform/platform.dart'; 4 import '../platform/platform.dart';
5 5
6 extension ContextExtensionss on BuildContext { 6 extension ContextExtensionss on BuildContext {
@@ -120,30 +120,22 @@ extension ContextExtensionss on BuildContext { @@ -120,30 +120,22 @@ extension ContextExtensionss on BuildContext {
120 /// if the device width is less than 300 return [watch] value. 120 /// if the device width is less than 300 return [watch] value.
121 /// in other cases return [mobile] value. 121 /// in other cases return [mobile] value.
122 T responsiveValue<T>({ 122 T responsiveValue<T>({
  123 + T? watch,
123 T? mobile, 124 T? mobile,
124 T? tablet, 125 T? tablet,
125 T? desktop, 126 T? desktop,
126 - T? watch,  
127 }) { 127 }) {
128 var deviceWidth = mediaQuerySize.shortestSide; 128 var deviceWidth = mediaQuerySize.shortestSide;
129 if (GetPlatform.isDesktop) { 129 if (GetPlatform.isDesktop) {
130 deviceWidth = mediaQuerySize.width; 130 deviceWidth = mediaQuerySize.width;
131 } 131 }
132 - if (deviceWidth >= 1200) {  
133 - if (desktop != null) {  
134 - return desktop;  
135 - }  
136 - }  
137 - if (deviceWidth >= 600) {  
138 - if (tablet != null) {  
139 - return tablet;  
140 - }  
141 - }  
142 - if (deviceWidth >= 300) {  
143 - if (mobile != null) {  
144 - return mobile;  
145 - }  
146 - }  
147 - return watch!; 132 + //big screen width can display smaller sizes
  133 + final values = [
  134 + if (deviceWidth >= 1200) desktop, //desktop is allowed
  135 + if (deviceWidth >= 600) tablet, //tablet is allowed
  136 + if (deviceWidth >= 300) mobile, //mobile is allowed
  137 + watch, //watch is allowed
  138 + ];
  139 + return values.whereType<T>().first;
148 } 140 }
149 } 141 }