Committed by
GitHub
Merge pull request #535 from joker-fu/main
support for disabling scaling. Fixes #534 #459
Showing
3 changed files
with
47 additions
and
6 deletions
@@ -41,7 +41,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; | @@ -41,7 +41,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; | ||
41 | ### Properties | 41 | ### Properties |
42 | 42 | ||
43 | | Property | Type | Default Value | Description | | 43 | | Property | Type | Default Value | Description | |
44 | -| ----------------- | ---------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | | 44 | +| ----------------- | ---------------- | ------------- |-----------------------------------------------------------------------------------------------------------------------------------------------| |
45 | | designSize | Size | Size(360,690) | The size of the device screen in the design draft, in dp | | 45 | | designSize | Size | Size(360,690) | The size of the device screen in the design draft, in dp | |
46 | | builder | Function | null | Return widget that uses the library in a property (ex: MaterialApp's theme) | | 46 | | builder | Function | null | Return widget that uses the library in a property (ex: MaterialApp's theme) | |
47 | | child | Widget | null | A part of builder that its dependencies/properties don't use the library | | 47 | | child | Widget | null | A part of builder that its dependencies/properties don't use the library | |
@@ -52,6 +52,8 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; | @@ -52,6 +52,8 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; | ||
52 | | fontSizeResolver | Function | _default_ | Function that specify how font size should be adapted. Default is that font size scale with width of screen. | | 52 | | fontSizeResolver | Function | _default_ | Function that specify how font size should be adapted. Default is that font size scale with width of screen. | |
53 | | responsiveWidgets | Iterable<String> | null | List/Set of widget names that should be included in rebuilding tree. (See [How flutter_screenutil marks a widget needs build](#rebuild-list)) | | 53 | | responsiveWidgets | Iterable<String> | null | List/Set of widget names that should be included in rebuilding tree. (See [How flutter_screenutil marks a widget needs build](#rebuild-list)) | |
54 | | excludeWidgets | Iterable<String> | null | List/Set of widget names that should be excluded from rebuilding tree. | | 54 | | excludeWidgets | Iterable<String> | null | List/Set of widget names that should be excluded from rebuilding tree. | |
55 | +| enableScaleWH | Function | null | Support enable scale width and height. | | ||
56 | +| enableScaleText | Function | null | Support enable scale text. | | ||
55 | 57 | ||
56 | 58 | ||
57 | **Note : You must either provide builder, child or both.** | 59 | **Note : You must either provide builder, child or both.** |
@@ -184,6 +186,25 @@ class _HomePageState extends State<HomePage> { | @@ -184,6 +186,25 @@ class _HomePageState extends State<HomePage> { | ||
184 | 186 | ||
185 | ### API | 187 | ### API |
186 | 188 | ||
189 | +#### Enable or disable scale | ||
190 | + | ||
191 | +```dart | ||
192 | + Widget build(BuildContext context) { | ||
193 | + return ScreenUtilInit( | ||
194 | + enableScaleWH: ()=>false, | ||
195 | + enableScaleText: ()=>false, | ||
196 | + //... | ||
197 | + ); | ||
198 | + } | ||
199 | +``` | ||
200 | + | ||
201 | +or | ||
202 | + | ||
203 | +```dart | ||
204 | +ScreenUtil.enableScale(enableWH: () => false, enableText: () => false); | ||
205 | +``` | ||
206 | + | ||
207 | + | ||
187 | #### Pass the dp size of the design draft | 208 | #### Pass the dp size of the design draft |
188 | 209 | ||
189 | ```dart | 210 | ```dart |
@@ -16,6 +16,10 @@ class ScreenUtil { | @@ -16,6 +16,10 @@ class ScreenUtil { | ||
16 | static const Size defaultSize = Size(360, 690); | 16 | static const Size defaultSize = Size(360, 690); |
17 | static ScreenUtil _instance = ScreenUtil._(); | 17 | static ScreenUtil _instance = ScreenUtil._(); |
18 | 18 | ||
19 | + static bool Function() _enableScaleWH = () => true; | ||
20 | + static bool Function() _enableScaleText = () => true; | ||
21 | + | ||
22 | + | ||
19 | /// UI设计中手机尺寸 , dp | 23 | /// UI设计中手机尺寸 , dp |
20 | /// Size of the phone in UI Design , dp | 24 | /// Size of the phone in UI Design , dp |
21 | late Size _uiSize; | 25 | late Size _uiSize; |
@@ -32,6 +36,16 @@ class ScreenUtil { | @@ -32,6 +36,16 @@ class ScreenUtil { | ||
32 | 36 | ||
33 | factory ScreenUtil() => _instance; | 37 | factory ScreenUtil() => _instance; |
34 | 38 | ||
39 | + /// Enable scale | ||
40 | + /// | ||
41 | + /// 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 | ||
43 | + /// | ||
44 | + static void enableScale({bool Function()? enableWH, bool Function()? enableText}) { | ||
45 | + _enableScaleWH = enableWH ?? () => true; | ||
46 | + _enableScaleText = enableText ?? () => true; | ||
47 | + } | ||
48 | + | ||
35 | /// Manually wait for window size to be initialized | 49 | /// Manually wait for window size to be initialized |
36 | /// | 50 | /// |
37 | /// `Recommended` to use before you need access window size | 51 | /// `Recommended` to use before you need access window size |
@@ -199,15 +213,15 @@ class ScreenUtil { | @@ -199,15 +213,15 @@ class ScreenUtil { | ||
199 | 213 | ||
200 | /// 实际尺寸与UI设计的比例 | 214 | /// 实际尺寸与UI设计的比例 |
201 | /// The ratio of actual width to UI design | 215 | /// The ratio of actual width to UI design |
202 | - double get scaleWidth => screenWidth / _uiSize.width; | 216 | + double get scaleWidth => !_enableScaleWH() ? 1 : screenWidth / _uiSize.width; |
203 | 217 | ||
204 | /// The ratio of actual height to UI design | 218 | /// The ratio of actual height to UI design |
205 | double get scaleHeight => | 219 | double get scaleHeight => |
206 | - (_splitScreenMode ? max(screenHeight, 700) : screenHeight) / | 220 | + !_enableScaleWH() ? 1 : (_splitScreenMode ? max(screenHeight, 700) : screenHeight) / |
207 | _uiSize.height; | 221 | _uiSize.height; |
208 | 222 | ||
209 | double get scaleText => | 223 | double get scaleText => |
210 | - _minTextAdapt ? min(scaleWidth, scaleHeight) : scaleWidth; | 224 | + !_enableScaleText() ? 1 : (_minTextAdapt ? min(scaleWidth, scaleHeight) : scaleWidth); |
211 | 225 | ||
212 | /// 根据UI设计的设备宽度适配 | 226 | /// 根据UI设计的设备宽度适配 |
213 | /// 高度也可以根据这个来做适配可以保证不变形,比如你想要一个正方形的时候. | 227 | /// 高度也可以根据这个来做适配可以保证不变形,比如你想要一个正方形的时候. |
@@ -74,6 +74,8 @@ class ScreenUtilInit extends StatefulWidget { | @@ -74,6 +74,8 @@ class ScreenUtilInit extends StatefulWidget { | ||
74 | this.minTextAdapt = false, | 74 | this.minTextAdapt = false, |
75 | this.useInheritedMediaQuery = false, | 75 | this.useInheritedMediaQuery = false, |
76 | this.ensureScreenSize = false, | 76 | this.ensureScreenSize = false, |
77 | + this.enableScaleWH, | ||
78 | + this.enableScaleText, | ||
77 | this.responsiveWidgets, | 79 | this.responsiveWidgets, |
78 | this.excludeWidgets, | 80 | this.excludeWidgets, |
79 | this.fontSizeResolver = FontSizeResolvers.width, | 81 | this.fontSizeResolver = FontSizeResolvers.width, |
@@ -85,6 +87,8 @@ class ScreenUtilInit extends StatefulWidget { | @@ -85,6 +87,8 @@ class ScreenUtilInit extends StatefulWidget { | ||
85 | final bool minTextAdapt; | 87 | final bool minTextAdapt; |
86 | final bool useInheritedMediaQuery; | 88 | final bool useInheritedMediaQuery; |
87 | final bool ensureScreenSize; | 89 | final bool ensureScreenSize; |
90 | + final bool Function()? enableScaleWH; | ||
91 | + final bool Function()? enableScaleText; | ||
88 | final RebuildFactor rebuildFactor; | 92 | final RebuildFactor rebuildFactor; |
89 | final FontSizeResolver fontSizeResolver; | 93 | final FontSizeResolver fontSizeResolver; |
90 | 94 | ||
@@ -97,8 +101,7 @@ class ScreenUtilInit extends StatefulWidget { | @@ -97,8 +101,7 @@ class ScreenUtilInit extends StatefulWidget { | ||
97 | State<ScreenUtilInit> createState() => _ScreenUtilInitState(); | 101 | State<ScreenUtilInit> createState() => _ScreenUtilInitState(); |
98 | } | 102 | } |
99 | 103 | ||
100 | -class _ScreenUtilInitState extends State<ScreenUtilInit> | ||
101 | - with WidgetsBindingObserver { | 104 | +class _ScreenUtilInitState extends State<ScreenUtilInit> with WidgetsBindingObserver { |
102 | final _canMarkedToBuild = HashSet<String>(); | 105 | final _canMarkedToBuild = HashSet<String>(); |
103 | final _excludedWidgets = HashSet<String>(); | 106 | final _excludedWidgets = HashSet<String>(); |
104 | MediaQueryData? _mediaQueryData; | 107 | MediaQueryData? _mediaQueryData; |
@@ -110,6 +113,9 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | @@ -110,6 +113,9 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | ||
110 | if (widget.responsiveWidgets != null) { | 113 | if (widget.responsiveWidgets != null) { |
111 | _canMarkedToBuild.addAll(widget.responsiveWidgets!); | 114 | _canMarkedToBuild.addAll(widget.responsiveWidgets!); |
112 | } | 115 | } |
116 | + | ||
117 | + ScreenUtil.enableScale(enableWH: widget.enableScaleWH, enableText: widget.enableScaleText); | ||
118 | + | ||
113 | _validateSize().then(_screenSizeCompleter.complete); | 119 | _validateSize().then(_screenSizeCompleter.complete); |
114 | 120 | ||
115 | super.initState(); | 121 | super.initState(); |
-
Please register or login to post a comment