Showing
2 changed files
with
19 additions
and
6 deletions
@@ -18,6 +18,7 @@ class ScreenUtil { | @@ -18,6 +18,7 @@ class ScreenUtil { | ||
18 | 18 | ||
19 | static bool Function() _enableScaleWH = () => true; | 19 | static bool Function() _enableScaleWH = () => true; |
20 | static bool Function() _enableScaleText = () => true; | 20 | static bool Function() _enableScaleText = () => true; |
21 | + static bool Function() _useDesignOrientation = () => false; | ||
21 | 22 | ||
22 | 23 | ||
23 | /// UI设计中手机尺寸 , dp | 24 | /// UI设计中手机尺寸 , dp |
@@ -27,6 +28,9 @@ class ScreenUtil { | @@ -27,6 +28,9 @@ class ScreenUtil { | ||
27 | ///屏幕方向 | 28 | ///屏幕方向 |
28 | late Orientation _orientation; | 29 | late Orientation _orientation; |
29 | 30 | ||
31 | + ///设计稿方向 | ||
32 | + late Orientation _designOrientation; | ||
33 | + | ||
30 | late bool _minTextAdapt; | 34 | late bool _minTextAdapt; |
31 | late MediaQueryData _data; | 35 | late MediaQueryData _data; |
32 | late bool _splitScreenMode; | 36 | late bool _splitScreenMode; |
@@ -41,9 +45,10 @@ class ScreenUtil { | @@ -41,9 +45,10 @@ class ScreenUtil { | ||
41 | /// if the enableWH return false, the width and the height scale ratio will be 1 | 45 | /// if the enableWH return false, the width and the height scale ratio will be 1 |
42 | /// if the enableText return false, the text scale ratio will be 1 | 46 | /// if the enableText return false, the text scale ratio will be 1 |
43 | /// | 47 | /// |
44 | - static void enableScale({bool Function()? enableWH, bool Function()? enableText}) { | 48 | + static void enableScale({bool Function()? enableWH, bool Function()? enableText, bool Function()? useDesignOrientation}) { |
45 | _enableScaleWH = enableWH ?? () => true; | 49 | _enableScaleWH = enableWH ?? () => true; |
46 | _enableScaleText = enableText ?? () => true; | 50 | _enableScaleText = enableText ?? () => true; |
51 | + _useDesignOrientation = useDesignOrientation?? () => false; | ||
47 | } | 52 | } |
48 | 53 | ||
49 | /// Manually wait for window size to be initialized | 54 | /// Manually wait for window size to be initialized |
@@ -138,11 +143,16 @@ class ScreenUtil { | @@ -138,11 +143,16 @@ class ScreenUtil { | ||
138 | ? Orientation.landscape | 143 | ? Orientation.landscape |
139 | : Orientation.portrait); | 144 | : Orientation.portrait); |
140 | 145 | ||
146 | + final designOrientation = designSize.width > designSize.height | ||
147 | + ? Orientation.landscape | ||
148 | + : Orientation.portrait; | ||
149 | + | ||
141 | _instance | 150 | _instance |
142 | ..fontSizeResolver = fontSizeResolver ?? _instance.fontSizeResolver | 151 | ..fontSizeResolver = fontSizeResolver ?? _instance.fontSizeResolver |
143 | .._minTextAdapt = minTextAdapt ?? _instance._minTextAdapt | 152 | .._minTextAdapt = minTextAdapt ?? _instance._minTextAdapt |
144 | .._splitScreenMode = splitScreenMode ?? _instance._splitScreenMode | 153 | .._splitScreenMode = splitScreenMode ?? _instance._splitScreenMode |
145 | - .._orientation = orientation; | 154 | + .._orientation = orientation |
155 | + .._designOrientation = designOrientation; | ||
146 | 156 | ||
147 | _instance._elementsToRebuild?.forEach((el) => el.markNeedsBuild()); | 157 | _instance._elementsToRebuild?.forEach((el) => el.markNeedsBuild()); |
148 | } | 158 | } |
@@ -213,12 +223,13 @@ class ScreenUtil { | @@ -213,12 +223,13 @@ class ScreenUtil { | ||
213 | 223 | ||
214 | /// 实际尺寸与UI设计的比例 | 224 | /// 实际尺寸与UI设计的比例 |
215 | /// The ratio of actual width to UI design | 225 | /// The ratio of actual width to UI design |
216 | - double get scaleWidth => !_enableScaleWH() ? 1 : screenWidth / _uiSize.width; | 226 | + double get scaleWidth => !_enableScaleWH() ? 1 : screenWidth / |
227 | + ((_useDesignOrientation() && _designOrientation != _orientation)? _uiSize.height : _uiSize.width); | ||
217 | 228 | ||
218 | /// The ratio of actual height to UI design | 229 | /// The ratio of actual height to UI design |
219 | double get scaleHeight => | 230 | double get scaleHeight => |
220 | !_enableScaleWH() ? 1 : (_splitScreenMode ? max(screenHeight, 700) : screenHeight) / | 231 | !_enableScaleWH() ? 1 : (_splitScreenMode ? max(screenHeight, 700) : screenHeight) / |
221 | - _uiSize.height; | 232 | + ((_useDesignOrientation() && _designOrientation != _orientation)? _uiSize.width : _uiSize.height); |
222 | 233 | ||
223 | double get scaleText => | 234 | double get scaleText => |
224 | !_enableScaleText() ? 1 : (_minTextAdapt ? min(scaleWidth, scaleHeight) : scaleWidth); | 235 | !_enableScaleText() ? 1 : (_minTextAdapt ? min(scaleWidth, scaleHeight) : scaleWidth); |
@@ -76,9 +76,10 @@ class ScreenUtilInit extends StatefulWidget { | @@ -76,9 +76,10 @@ class ScreenUtilInit extends StatefulWidget { | ||
76 | this.ensureScreenSize = false, | 76 | this.ensureScreenSize = false, |
77 | this.enableScaleWH, | 77 | this.enableScaleWH, |
78 | this.enableScaleText, | 78 | this.enableScaleText, |
79 | + this.useDesignOrientation, | ||
79 | this.responsiveWidgets, | 80 | this.responsiveWidgets, |
80 | this.excludeWidgets, | 81 | this.excludeWidgets, |
81 | - this.fontSizeResolver = FontSizeResolvers.width, | 82 | + this.fontSizeResolver = FontSizeResolvers.width |
82 | }) : super(key: key); | 83 | }) : super(key: key); |
83 | 84 | ||
84 | final ScreenUtilInitBuilder? builder; | 85 | final ScreenUtilInitBuilder? builder; |
@@ -89,6 +90,7 @@ class ScreenUtilInit extends StatefulWidget { | @@ -89,6 +90,7 @@ class ScreenUtilInit extends StatefulWidget { | ||
89 | final bool ensureScreenSize; | 90 | final bool ensureScreenSize; |
90 | final bool Function()? enableScaleWH; | 91 | final bool Function()? enableScaleWH; |
91 | final bool Function()? enableScaleText; | 92 | final bool Function()? enableScaleText; |
93 | + final bool Function()? useDesignOrientation; | ||
92 | final RebuildFactor rebuildFactor; | 94 | final RebuildFactor rebuildFactor; |
93 | final FontSizeResolver fontSizeResolver; | 95 | final FontSizeResolver fontSizeResolver; |
94 | 96 | ||
@@ -114,7 +116,7 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> with WidgetsBindingObse | @@ -114,7 +116,7 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> with WidgetsBindingObse | ||
114 | _canMarkedToBuild.addAll(widget.responsiveWidgets!); | 116 | _canMarkedToBuild.addAll(widget.responsiveWidgets!); |
115 | } | 117 | } |
116 | 118 | ||
117 | - ScreenUtil.enableScale(enableWH: widget.enableScaleWH, enableText: widget.enableScaleText); | 119 | + ScreenUtil.enableScale(enableWH: widget.enableScaleWH, enableText: widget.enableScaleText, useDesignOrientation: widget.useDesignOrientation); |
118 | 120 | ||
119 | _validateSize().then(_screenSizeCompleter.complete); | 121 | _validateSize().then(_screenSizeCompleter.complete); |
120 | 122 |
-
Please register or login to post a comment