Alexey Zdorovykh

init widget, example, readme

@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 ### Add dependency: 18 ### Add dependency:
19 Please check the latest version before installation. 19 Please check the latest version before installation.
20 If there is any problem with the new version, please use the previous version 20 If there is any problem with the new version, please use the previous version
21 -``` 21 +```yaml
22 dependencies: 22 dependencies:
23 flutter: 23 flutter:
24 sdk: flutter 24 sdk: flutter
@@ -26,35 +26,33 @@ dependencies: @@ -26,35 +26,33 @@ dependencies:
26 flutter_screenutil: ^4.0.0-beta1 26 flutter_screenutil: ^4.0.0-beta1
27 ``` 27 ```
28 ### Add the following imports to your Dart code: 28 ### Add the following imports to your Dart code:
29 -``` 29 +```dart
30 import 'package:flutter_screenutil/flutter_screenutil.dart'; 30 import 'package:flutter_screenutil/flutter_screenutil.dart';
31 ``` 31 ```
32 32
33 ### Property 33 ### Property
34 34
35 |Property|Type|Default Value|Description| 35 |Property|Type|Default Value|Description|
36 -|:---|:---|:---|:---| 36 +|:---|:---|:---|:---|
37 |designSize|Size|Size(1080, 1920)|The size of the device in the design draft, in px| 37 |designSize|Size|Size(1080, 1920)|The size of the device in the design draft, in px|
38 |allowFontScaling|bool|false|Sets whether the font size is scaled according to the system's "font size" assist option| 38 |allowFontScaling|bool|false|Sets whether the font size is scaled according to the system's "font size" assist option|
39 39
40 ### Initialize and set the fit size and font size to scale according to the system's "font size" accessibility option 40 ### Initialize and set the fit size and font size to scale according to the system's "font size" accessibility option
41 Please set the size of the design draft before use, the width and height of the design draft. 41 Please set the size of the design draft before use, the width and height of the design draft.
42 42
43 -``` 43 +```dart
44 void main() => runApp(MyApp()); 44 void main() => runApp(MyApp());
45 45
46 class MyApp extends StatelessWidget { 46 class MyApp extends StatelessWidget {
47 @override 47 @override
48 Widget build(BuildContext context) { 48 Widget build(BuildContext context) {
49 - return LayoutBuilder(  
50 - builder: (context, constraints) {  
51 - //Set the fit size (fill in the screen size of the device in the design) If the design is based on the size of the iPhone6 ​​(iPhone6 ​​750*1334)  
52 - ScreenUtil.init(constraints, designSize: Size(750, 1334), allowFontScaling: false);  
53 -  
54 - return MaterialApp(  
55 - ...  
56 - );  
57 - }, 49 + //Set the fit size (fill in the screen size of the device in the design) If the design is based on the size of the iPhone6 ​​(iPhone6 ​​750*1334)
  50 + return ScreenUtilInit(
  51 + designSize: Size(750, 1334),
  52 + allowFontScaling: false,
  53 + child: MaterialApp(
  54 + ...
  55 + ),
58 ); 56 );
59 } 57 }
60 } 58 }
@@ -112,14 +110,14 @@ If your dart sdk>=2.6, you can use extension functions: @@ -112,14 +110,14 @@ If your dart sdk>=2.6, you can use extension functions:
112 example: 110 example:
113 111
114 instead of : 112 instead of :
115 -``` 113 +```dart
116 Container( 114 Container(
117 width: ScreenUtil().setWidth(50), 115 width: ScreenUtil().setWidth(50),
118 height:ScreenUtil().setHeight(200), 116 height:ScreenUtil().setHeight(200),
119 ) 117 )
120 ``` 118 ```
121 you can use it like this: 119 you can use it like this:
122 -``` 120 +```dart
123 Container( 121 Container(
124 width: 50.w, 122 width: 50.w,
125 height:200.h 123 height:200.h
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 23
24 安装之前请查看最新版本 24 安装之前请查看最新版本
25 新版本如有问题请使用上一版 25 新版本如有问题请使用上一版
26 -``` 26 +```yaml
27 dependencies: 27 dependencies:
28 flutter: 28 flutter:
29 sdk: flutter 29 sdk: flutter
@@ -31,7 +31,7 @@ dependencies: @@ -31,7 +31,7 @@ dependencies:
31 flutter_screenutil: ^4.0.0-beta1 31 flutter_screenutil: ^4.0.0-beta1
32 ``` 32 ```
33 ### 在每个使用的地方导入包: 33 ### 在每个使用的地方导入包:
34 -``` 34 +```dart
35 import 'package:flutter_screenutil/flutter_screenutil.dart'; 35 import 'package:flutter_screenutil/flutter_screenutil.dart';
36 ``` 36 ```
37 37
@@ -39,14 +39,14 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -39,14 +39,14 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
39 39
40 |属性|类型|默认值|描述| 40 |属性|类型|默认值|描述|
41 |:---|:---|:---|:---| 41 |:---|:---|:---|:---|
42 -|designSize|Size|Size(1080, 1920)|设计稿中设备的尺寸(单位px)| 42 +|designSize|Size|Size(1080, 1920)|设计稿中设备的尺寸(单位随意,但在使用过程中必须保持一致)|
43 |allowFontScaling|bool|false|设置字体大小是否根据系统的“字体大小”辅助选项来进行缩放| 43 |allowFontScaling|bool|false|设置字体大小是否根据系统的“字体大小”辅助选项来进行缩放|
44 44
45 ### 初始化并设置适配尺寸及字体大小是否根据系统的“字体大小”辅助选项来进行缩放 45 ### 初始化并设置适配尺寸及字体大小是否根据系统的“字体大小”辅助选项来进行缩放
46 在使用之前请设置好设计稿的宽度和高度,传入设计稿的宽度和高度(单位随意,但在使用过程中必须保持一致) 46 在使用之前请设置好设计稿的宽度和高度,传入设计稿的宽度和高度(单位随意,但在使用过程中必须保持一致)
47 一定要进行初始化(只需设置一次),以保证在每次使用之前设置好了适配尺寸: 47 一定要进行初始化(只需设置一次),以保证在每次使用之前设置好了适配尺寸:
48 48
49 -``` 49 +```dart
50 //填入设计稿中设备的屏幕尺寸 50 //填入设计稿中设备的屏幕尺寸
51 51
52 void main() => runApp(MyApp()); 52 void main() => runApp(MyApp());
@@ -54,18 +54,17 @@ void main() => runApp(MyApp()); @@ -54,18 +54,17 @@ void main() => runApp(MyApp());
54 class MyApp extends StatelessWidget { 54 class MyApp extends StatelessWidget {
55 @override 55 @override
56 Widget build(BuildContext context) { 56 Widget build(BuildContext context) {
57 - return LayoutBuilder(  
58 - builder: (context, constraints) {  
59 - //设置适配尺寸 (填入设计稿中设备的屏幕尺寸) 此处假如设计稿是按iPhone6的尺寸设计的(iPhone6 750*1334)  
60 - ScreenUtil.init(constraints, designSize: Size(750, 1334), allowFontScaling: false);  
61 -  
62 - return MaterialApp(  
63 - ...  
64 - );  
65 - }, 57 + //设置适配尺寸 (填入设计稿中设备的屏幕尺寸) 此处假如设计稿是按iPhone6的尺寸设计的(iPhone6 750*1334)
  58 + return ScreenUtilInit(
  59 + designSize: Size(750, 1334),
  60 + allowFontScaling: false,
  61 + child: MaterialApp(
  62 + ...
  63 + ),
66 ); 64 );
67 } 65 }
68 } 66 }
  67 +
69 //默认 width : 1080px , height:1920px , allowFontScaling:false 68 //默认 width : 1080px , height:1920px , allowFontScaling:false
70 ScreenUtil.init(constraints); 69 ScreenUtil.init(constraints);
71 70
@@ -119,7 +118,7 @@ setHeight譁ケ豕穂クサ隕∵弍蝨ィ鬮伜コヲ荳願ソ幄。碁る, 蝨ィ菴諠ウ謗ァ蛻カUI荳贋ク螻冗噪 @@ -119,7 +118,7 @@ setHeight譁ケ豕穂クサ隕∵弍蝨ィ鬮伜コヲ荳願ソ幄。碁る, 蝨ィ菴諠ウ謗ァ蛻カUI荳贋ク螻冗噪
119 118
120 例如: 119 例如:
121 120
122 -``` 121 +```dart
123 //UI上是长方形: 122 //UI上是长方形:
124 Container( 123 Container(
125 width: ScreenUtil().setWidth(375), 124 width: ScreenUtil().setWidth(375),
@@ -136,14 +135,14 @@ Container( @@ -136,14 +135,14 @@ Container(
136 如果你的dart sdk>=2.6,可以使用扩展函数: 135 如果你的dart sdk>=2.6,可以使用扩展函数:
137 example: 136 example:
138 不用这个: 137 不用这个:
139 -``` 138 +```dart
140 Container( 139 Container(
141 width: ScreenUtil().setWidth(50), 140 width: ScreenUtil().setWidth(50),
142 height:ScreenUtil().setHeight(200), 141 height:ScreenUtil().setHeight(200),
143 ) 142 )
144 ``` 143 ```
145 而是用这个: 144 而是用这个:
146 -``` 145 +```dart
147 Container( 146 Container(
148 width: 50.w, 147 width: 50.w,
149 height:200.h 148 height:200.h
@@ -153,7 +152,7 @@ height:200.h @@ -153,7 +152,7 @@ height:200.h
153 #### 适配字体: 152 #### 适配字体:
154 传入设计稿的字体大小: 153 传入设计稿的字体大小:
155 154
156 -``` 155 +```dart
157 //传入字体大小(单位和初始化时的单位保持一致),默认不根据系统的“字体大小”辅助选项来进行缩放(可在初始化ScreenUtil时设置allowFontScaling) 156 //传入字体大小(单位和初始化时的单位保持一致),默认不根据系统的“字体大小”辅助选项来进行缩放(可在初始化ScreenUtil时设置allowFontScaling)
158 ScreenUtil().setSp(28) 157 ScreenUtil().setSp(28)
159 158
@@ -184,12 +183,12 @@ Column( @@ -184,12 +183,12 @@ Column(
184 ) 183 )
185 ``` 184 ```
186 185
187 -``` 186 +
188 [widget test](https://github.com/OpenFlutter/flutter_screenutil/issues/115) 187 [widget test](https://github.com/OpenFlutter/flutter_screenutil/issues/115)
189 188
190 ### 使用示例: 189 ### 使用示例:
191 190
192 -[example demo](https://github.com/OpenFlutter/flutter_screenutil/blob/master/example/lib/main_zh.dart) 191 +[example demo](https://github.com/OpenFlutter/flutter_ScreenUtil/blob/master/example/lib/main_zh.dart)
193 192
194 效果: 193 效果:
195 194
@@ -19,16 +19,16 @@ @@ -19,16 +19,16 @@
19 ### Adicionando a dependência: 19 ### Adicionando a dependência:
20 Por favor, verifique a última versão antes da instalação. 20 Por favor, verifique a última versão antes da instalação.
21 Se houver algum problema com a nova versão, use a versão anterior 21 Se houver algum problema com a nova versão, use a versão anterior
22 -``` 22 +```yaml
23 dependencies: 23 dependencies:
24 flutter: 24 flutter:
25 sdk: flutter 25 sdk: flutter
26 # add flutter_screenutil 26 # add flutter_screenutil
27 - flutter_screenutil: ^4.0.0-beta1 27 + flutter_screenutil: ^4.0.0-beta
28 ``` 28 ```
29 29
30 ### Adicione o seguinte import em seu código Dart: 30 ### Adicione o seguinte import em seu código Dart:
31 -``` 31 +```dart
32 import 'package:flutter_screenutil/flutter_screenutil.dart'; 32 import 'package:flutter_screenutil/flutter_screenutil.dart';
33 ``` 33 ```
34 34
@@ -45,12 +45,20 @@ Por favor, defina a largura e altura do protótipo de design antes de usar (em p @@ -45,12 +45,20 @@ Por favor, defina a largura e altura do protótipo de design antes de usar (em p
45 Certifique-se de definir as dimensões na paginal inicial do MaterialApp (ou seja, no arquivo de entrada, defina apenas uma vez) para garantir que o tamanho de ajuste seja o mesmo antes de cada uso: 45 Certifique-se de definir as dimensões na paginal inicial do MaterialApp (ou seja, no arquivo de entrada, defina apenas uma vez) para garantir que o tamanho de ajuste seja o mesmo antes de cada uso:
46 46
47 ```dart 47 ```dart
48 -//Preencha o tamanho da tela do dispositivo no protótipo de design  
49 -void main() {  
50 - WidgetsFlutterBinding.ensureInitialized();  
51 - //Set the fit size (fill in the screen size of the device in the design) If the design is based on the size of the iPhone6 ​​(iPhone6 ​​750*1334)  
52 - ScreenUtil.init(constraints, designSize: Size(750, 1334), allowFontScaling: false);  
53 - runApp(MyApp()); 48 +void main() => runApp(MyApp());
  49 +
  50 +class MyApp extends StatelessWidget {
  51 + @override
  52 + Widget build(BuildContext context) {
  53 + //Preencha o tamanho da tela do dispositivo no protótipo de design
  54 + return ScreenUtilInit(
  55 + designSize: Size(750, 1334),
  56 + allowFontScaling: false,
  57 + child: MaterialApp(
  58 + ...
  59 + ),
  60 + );
  61 + }
54 } 62 }
55 63
56 //Valor padrão: width : 1080px , height:1920px , allowFontScaling:false 64 //Valor padrão: width : 1080px , height:1920px , allowFontScaling:false
@@ -6,21 +6,18 @@ void main() => runApp(MyApp()); @@ -6,21 +6,18 @@ void main() => runApp(MyApp());
6 class MyApp extends StatelessWidget { 6 class MyApp extends StatelessWidget {
7 @override 7 @override
8 Widget build(BuildContext context) { 8 Widget build(BuildContext context) {
9 - return LayoutBuilder(  
10 - builder: (context, constraints) {  
11 - //Set the fit size (fill in the screen size of the device in the design) If the design is based on the size of the iPhone6 ​​(iPhone6 ​​750*1334)  
12 - ScreenUtil.init(constraints, designSize: Size(750, 1334), allowFontScaling: false);  
13 -  
14 - return MaterialApp(  
15 - debugShowCheckedModeBanner: false,  
16 - title: 'Flutter_ScreenUtil',  
17 - theme: ThemeData(  
18 - primarySwatch: Colors.blue,  
19 - textTheme: TextTheme(button: TextStyle(fontSize: 80.nsp)),  
20 - ),  
21 - home: HomePage(title: 'FlutterScreenUtil Demo'),  
22 - );  
23 - }, 9 + //Set the fit size (fill in the screen size of the device in the design) If the design is based on the size of the iPhone6 ​​(iPhone6 ​​750*1334)
  10 + return ScreenUtilInit(
  11 + designSize: Size(750, 1334),
  12 + allowFontScaling: false,
  13 + child: MaterialApp(
  14 + debugShowCheckedModeBanner: false,
  15 + title: 'Flutter_ScreenUtil',
  16 + theme: ThemeData(
  17 + primarySwatch: Colors.blue,
  18 + ),
  19 + home: HomePage(title: 'FlutterScreenUtil Demo'),
  20 + ),
24 ); 21 );
25 } 22 }
26 } 23 }
@@ -130,10 +127,8 @@ class _HomePageState extends State<HomePage> { @@ -130,10 +127,8 @@ class _HomePageState extends State<HomePage> {
130 print('Device width dp:${1.sw}dp'); 127 print('Device width dp:${1.sw}dp');
131 print('Device height dp:${1.sh}dp'); 128 print('Device height dp:${1.sh}dp');
132 print('Device pixel density:${ScreenUtil().pixelRatio}'); 129 print('Device pixel density:${ScreenUtil().pixelRatio}');
133 - print(  
134 - 'Bottom safe zone distance dp:${ScreenUtil().bottomBarHeight}dp');  
135 - print(  
136 - 'Status bar height dp:${ScreenUtil().statusBarHeight}dp'); 130 + print('Bottom safe zone distance dp:${ScreenUtil().bottomBarHeight}dp');
  131 + print('Status bar height dp:${ScreenUtil().statusBarHeight}dp');
137 print('Ratio of actual width dp to UI Design:${ScreenUtil().scaleWidth}'); 132 print('Ratio of actual width dp to UI Design:${ScreenUtil().scaleWidth}');
138 print('Ratio of actual height dp to UI Design:${ScreenUtil().scaleHeight}'); 133 print('Ratio of actual height dp to UI Design:${ScreenUtil().scaleHeight}');
139 print('System font scaling:${ScreenUtil().textScaleFactor}'); 134 print('System font scaling:${ScreenUtil().textScaleFactor}');
@@ -6,21 +6,18 @@ void main() => runApp(MyApp()); @@ -6,21 +6,18 @@ void main() => runApp(MyApp());
6 class MyApp extends StatelessWidget { 6 class MyApp extends StatelessWidget {
7 @override 7 @override
8 Widget build(BuildContext context) { 8 Widget build(BuildContext context) {
9 - return LayoutBuilder(  
10 - builder: (context, constraints) {  
11 - //Set the fit size (fill in the screen size of the device in the design) If the design is based on the size of the iPhone6 ​​(iPhone6 ​​750*1334)  
12 - ScreenUtil.init(constraints, designSize: Size(750, 1334), allowFontScaling: false);  
13 -  
14 - return MaterialApp(  
15 - debugShowCheckedModeBanner: false,  
16 - title: 'Flutter_ScreenUtil',  
17 - theme: ThemeData(  
18 - primarySwatch: Colors.blue,  
19 - textTheme: TextTheme(button: TextStyle(fontSize: 80.nsp)),  
20 - ),  
21 - home: HomePage(title: 'FlutterScreenUtil Demo'),  
22 - );  
23 - }, 9 + //Set the fit size (fill in the screen size of the device in the design) If the design is based on the size of the iPhone6 ​​(iPhone6 ​​750*1334)
  10 + return ScreenUtilInit(
  11 + designSize: Size(750, 1334),
  12 + allowFontScaling: false,
  13 + child: MaterialApp(
  14 + debugShowCheckedModeBanner: false,
  15 + title: 'Flutter_ScreenUtil',
  16 + theme: ThemeData(
  17 + primarySwatch: Colors.blue,
  18 + ),
  19 + home: HomePage(title: 'FlutterScreenUtil Demo'),
  20 + ),
24 ); 21 );
25 } 22 }
26 } 23 }
@@ -7,3 +7,4 @@ library flutter_screenutil; @@ -7,3 +7,4 @@ library flutter_screenutil;
7 7
8 export 'size_extension.dart'; 8 export 'size_extension.dart';
9 export 'screenutil.dart'; 9 export 'screenutil.dart';
  10 +export 'screenutil_init.dart';
  1 +import 'package:flutter/widgets.dart';
  2 +
  3 +import 'screenutil.dart';
  4 +
  5 +class ScreenUtilInit extends StatelessWidget {
  6 + const ScreenUtilInit({
  7 + @required this.child,
  8 + this.designSize = ScreenUtil.defaultSize,
  9 + this.allowFontScaling = false,
  10 + Key key,
  11 + }) : super(key: key);
  12 +
  13 + final Widget child;
  14 + final Size designSize;
  15 + final bool allowFontScaling;
  16 +
  17 + @override
  18 + Widget build(BuildContext context) {
  19 + return LayoutBuilder(
  20 + builder: (_, BoxConstraints constraints) {
  21 + ScreenUtil.init(
  22 + constraints,
  23 + designSize: designSize,
  24 + allowFontScaling: allowFontScaling,
  25 + );
  26 +
  27 + return child;
  28 + },
  29 + );
  30 + }
  31 +}