june lee
Committed by GitHub

remove dart:io for support web (#550)

@@ -3,7 +3,8 @@ @@ -3,7 +3,8 @@
3 * email: zhuoyuan93@gmail.com 3 * email: zhuoyuan93@gmail.com
4 */ 4 */
5 5
6 -import 'dart:io'; 6 +import 'package:flutter/foundation.dart' show kIsWeb, defaultTargetPlatform;
  7 +
7 import 'dart:math' show min, max; 8 import 'dart:math' show min, max;
8 import 'dart:ui' as ui show FlutterView; 9 import 'dart:ui' as ui show FlutterView;
9 10
@@ -241,34 +242,40 @@ class ScreenUtil { @@ -241,34 +242,40 @@ class ScreenUtil {
241 double setSp(num fontSize) => 242 double setSp(num fontSize) =>
242 fontSizeResolver?.call(fontSize, _instance) ?? fontSize * scaleText; 243 fontSizeResolver?.call(fontSize, _instance) ?? fontSize * scaleText;
243 244
244 - DeviceType deviceType() {  
245 - DeviceType deviceType;  
246 - switch (Platform.operatingSystem) {  
247 - case 'android':  
248 - case 'ios':  
249 - deviceType = DeviceType.mobile;  
250 - if ((orientation == Orientation.portrait && screenWidth < 600) ||  
251 - (orientation == Orientation.landscape && screenHeight < 600)) {  
252 - deviceType = DeviceType.mobile;  
253 - } else {  
254 - deviceType = DeviceType.tablet; 245 + DeviceType deviceType(BuildContext context) {
  246 + var deviceType = DeviceType.web;
  247 + final screenWidth = MediaQuery.of(context).size.width;
  248 + final screenHeight = MediaQuery.of(context).size.height;
  249 + final orientation = MediaQuery.of(context).orientation;
  250 +
  251 + if (kIsWeb) {
  252 + deviceType = DeviceType.web;
  253 + } else {
  254 + bool isMobile = defaultTargetPlatform == TargetPlatform.iOS || defaultTargetPlatform == TargetPlatform.android;
  255 + bool isTablet = (orientation == Orientation.portrait && screenWidth >= 600) || (orientation == Orientation.landscape && screenHeight >= 600);
  256 +
  257 + if (isMobile) {
  258 + deviceType = isTablet ? DeviceType.tablet : DeviceType.mobile;
  259 + } else {
  260 + switch (defaultTargetPlatform) {
  261 + case TargetPlatform.linux:
  262 + deviceType = DeviceType.linux;
  263 + break;
  264 + case TargetPlatform.macOS:
  265 + deviceType = DeviceType.mac;
  266 + break;
  267 + case TargetPlatform.windows:
  268 + deviceType = DeviceType.windows;
  269 + break;
  270 + case TargetPlatform.fuchsia:
  271 + deviceType = DeviceType.fuchsia;
  272 + break;
  273 + default:
  274 + break;
255 } 275 }
256 - break;  
257 - case 'linux':  
258 - deviceType = DeviceType.linux;  
259 - break;  
260 - case 'macos':  
261 - deviceType = DeviceType.mac;  
262 - break;  
263 - case 'windows':  
264 - deviceType = DeviceType.windows;  
265 - break;  
266 - case 'fuchsia':  
267 - deviceType = DeviceType.fuchsia;  
268 - break;  
269 - default:  
270 - deviceType = DeviceType.web; 276 + }
271 } 277 }
  278 +
272 return deviceType; 279 return deviceType;
273 } 280 }
274 281