|
@@ -1,7 +1,8 @@
|
|
|
+import 'dart:ui';
|
|
|
+
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'dart:ui' as ui show window;
|
|
|
|
|
|
-
|
|
|
///默认设计稿尺寸(单位 dp or pt)
|
|
|
double _designW = 360.0;
|
|
|
double _designH = 640.0;
|
|
@@ -40,14 +41,15 @@ class ScreenUtil {
|
|
|
}
|
|
|
|
|
|
_init() {
|
|
|
+ //先用老的方法获取,如果获取不到再使用新方法获取
|
|
|
MediaQueryData mediaQuery = MediaQueryData.fromWindow(ui.window);
|
|
|
if (_mediaQueryData != mediaQuery) {
|
|
|
_mediaQueryData = mediaQuery;
|
|
|
- _screenWidth = mediaQuery.size.width;
|
|
|
- _screenHeight = mediaQuery.size.height;
|
|
|
- _screenDensity = mediaQuery.devicePixelRatio;
|
|
|
- _statusBarHeight = mediaQuery.padding.top;
|
|
|
- _bottomBarHeight = mediaQuery.padding.bottom;
|
|
|
+ _screenWidth = mediaQuery.size.width == 0.0 ? MediaQueryData.fromView(PlatformDispatcher.instance.views.first).size.width : mediaQuery.size.width;
|
|
|
+ _screenHeight = mediaQuery.size.height == 0.0 ? MediaQueryData.fromView(PlatformDispatcher.instance.views.first).size.height : mediaQuery.size.height;
|
|
|
+ _screenDensity = mediaQuery.devicePixelRatio == 0.0 ? MediaQueryData.fromView(PlatformDispatcher.instance.views.first).devicePixelRatio : mediaQuery.devicePixelRatio;
|
|
|
+ _statusBarHeight = mediaQuery.padding.top == 0.0 ? MediaQueryData.fromView(PlatformDispatcher.instance.views.first).padding.top : mediaQuery.padding.top;
|
|
|
+ _bottomBarHeight = mediaQuery.padding.bottom == 0.0 ? MediaQueryData.fromView(PlatformDispatcher.instance.views.first).padding.bottom : mediaQuery.padding.bottom;
|
|
|
_appBarHeight = kToolbarHeight;
|
|
|
}
|
|
|
}
|
|
@@ -174,9 +176,7 @@ class ScreenUtil {
|
|
|
/// 返回根据屏幕宽适配后尺寸(单位 dp or pt)
|
|
|
/// sizePx unit px
|
|
|
double getWidthPx(double sizePx) {
|
|
|
- return _screenWidth == 0.0
|
|
|
- ? (sizePx / _designD)
|
|
|
- : (sizePx * _screenWidth / (_designW * _designD));
|
|
|
+ return _screenWidth == 0.0 ? (sizePx / _designD) : (sizePx * _screenWidth / (_designW * _designD));
|
|
|
}
|
|
|
|
|
|
/// 仅支持纵屏。
|
|
@@ -184,9 +184,7 @@ class ScreenUtil {
|
|
|
/// 返回根据屏幕高适配后尺寸(单位 dp or pt)
|
|
|
/// sizePx unit px
|
|
|
double getHeightPx(double sizePx) {
|
|
|
- return _screenHeight == 0.0
|
|
|
- ? (sizePx / _designD)
|
|
|
- : (sizePx * _screenHeight / (_designH * _designD));
|
|
|
+ return _screenHeight == 0.0 ? (sizePx / _designD) : (sizePx * _screenHeight / (_designH * _designD));
|
|
|
}
|
|
|
|
|
|
/// 仅支持纵屏。
|
|
@@ -209,8 +207,7 @@ class ScreenUtil {
|
|
|
/// 适配比率。
|
|
|
/// Ratio.
|
|
|
double getRatio() {
|
|
|
- return (_screenWidth > _screenHeight ? _screenHeight : _screenWidth) /
|
|
|
- _designW;
|
|
|
+ return (_screenWidth > _screenHeight ? _screenHeight : _screenWidth) / _designW;
|
|
|
}
|
|
|
|
|
|
/// 兼容横/纵屏。
|