Committed by
GitHub
bugifx: useInheritedMediaQuery 为 false 时,键盘可能覆盖输入框 (#487)
* bugifx: 某些情况下键盘无法弹起 * update readme
Showing
5 changed files
with
63 additions
and
60 deletions
1 | # flutter_screenutil | 1 | # flutter_screenutil |
2 | 2 | ||
3 | -[](https://pub.dev/packages/flutter_screenutil) | ||
4 | -[](https://pub.dev/packages/flutter_screenutil/score) | ||
5 | -[](https://pub.dev/packages/flutter_screenutil/score) | 3 | +[](https://pub.dev/packages/flutter_screenutil) |
4 | +[](https://pub.dev/packages/flutter_screenutil/score) | ||
5 | +[](https://pub.dev/packages/flutter_screenutil/score) | ||
6 | [](https://www.codefactor.io/repository/github/openflutter/flutter_screenutil) | 6 | [](https://www.codefactor.io/repository/github/openflutter/flutter_screenutil) |
7 | 7 | ||
8 | **A flutter plugin for adapting screen and font size.Let your UI display a reasonable layout on different screen sizes!** | 8 | **A flutter plugin for adapting screen and font size.Let your UI display a reasonable layout on different screen sizes!** |
@@ -40,18 +40,18 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; | @@ -40,18 +40,18 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; | ||
40 | 40 | ||
41 | ### Property | 41 | ### Property |
42 | 42 | ||
43 | -| Property | Type | Default Value | Description | | ||
44 | -| --------------- |--------------|---------------|-----------------------------------------------------------------------------| | ||
45 | -| deviceSize | Size | null | The size of the physical device | | ||
46 | -| designSize | Size | Size(360,690) | The size of the device screen in the design draft, in dp | | ||
47 | -| builder | Function | null | Return widget that uses the library in a property (ex: MaterialApp's theme) | | ||
48 | -| child | Widget | null | A part of builder that its dependencies/properties don't use the library | | ||
49 | -| rebuildFactor | Function | *default* | Returns whether to rebuild or not when screen metrics changes. | | ||
50 | -| orientation | Orientation | portrait | screen orientation | | ||
51 | -| splitScreenMode | bool | false | support for split screen | | ||
52 | -| minTextAdapt | bool | false | Whether to adapt the text according to the minimum of width and height | | ||
53 | -| context | BuildContext | null | Get physical device data if not provided, by MediaQuery.of(context) | | ||
54 | -| useInheritedMediaQuery | bool | true | Set this to true for Flutter 3.10 to avoid keyboard overlay on TextField | | 43 | +| Property | Type | Default Value | Description | |
44 | +| --------------- |--------------|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------| | ||
45 | +| deviceSize | Size | null | The size of the physical device | | ||
46 | +| designSize | Size | Size(360,690) | The size of the device screen in the design draft, in dp | | ||
47 | +| builder | Function | null | Return widget that uses the library in a property (ex: MaterialApp's theme) | | ||
48 | +| child | Widget | null | A part of builder that its dependencies/properties don't use the library | | ||
49 | +| rebuildFactor | Function | *default* | Returns whether to rebuild or not when screen metrics changes. | | ||
50 | +| orientation | Orientation | portrait | screen orientation | | ||
51 | +| splitScreenMode | bool | false | support for split screen | | ||
52 | +| minTextAdapt | bool | false | Whether to adapt the text according to the minimum of width and height | | ||
53 | +| context | BuildContext | null | Get physical device data if not provided, by MediaQuery.of(context) | | ||
54 | +| useInheritedMediaQuery | bool | false | Recommended use `false` avoid rebuild very frequently <br/><br/> ~~Set this to true for Flutter 3.10 to avoid keyboard overlay on TextField~~ | | ||
55 | 55 | ||
56 | **Note : You must either provide builder, child or both.** | 56 | **Note : You must either provide builder, child or both.** |
57 | 57 |
1 | # flutter_screenutil | 1 | # flutter_screenutil |
2 | 2 | ||
3 | -[](https://pub.dartlang.org/packages/flutter_screenutil) | ||
4 | -[](https://pub.dev/packages/flutter_screenutil/score) | ||
5 | -[](https://pub.dev/packages/flutter_screenutil/score) | 3 | +[](https://pub.dev/packages/flutter_screenutil) |
4 | +[](https://pub.dev/packages/flutter_screenutil/score) | ||
5 | +[](https://pub.dev/packages/flutter_screenutil/score) | ||
6 | +[](https://www.codefactor.io/repository/github/openflutter/flutter_screenutil) | ||
6 | 7 | ||
7 | **flutter 屏幕适配方案,用于调整屏幕和字体大小的flutter插件,让你的UI在不同尺寸的屏幕上都能显示合理的布局!** | 8 | **flutter 屏幕适配方案,用于调整屏幕和字体大小的flutter插件,让你的UI在不同尺寸的屏幕上都能显示合理的布局!** |
8 | 9 |
1 | # I don’t speak Portuguese, and other developers have translated the first version. I later modified it based on the translation software. It is recommended to read the English/Chinese version. | 1 | # I don’t speak Portuguese, and other developers have translated the first version. I later modified it based on the translation software. It is recommended to read the English/Chinese version. |
2 | # flutter_screenutil | 2 | # flutter_screenutil |
3 | -[](https://pub.dartlang.org/packages/flutter_screenutil) | ||
4 | -[](https://pub.dev/packages/flutter_screenutil/score) | ||
5 | -[](https://pub.dev/packages/flutter_screenutil/score) | 3 | +[](https://pub.dev/packages/flutter_screenutil) |
4 | +[](https://pub.dev/packages/flutter_screenutil/score) | ||
5 | +[](https://pub.dev/packages/flutter_screenutil/score) | ||
6 | +[](https://www.codefactor.io/repository/github/openflutter/flutter_screenutil) | ||
6 | 7 | ||
7 | **Um plugin Flutter para adaptação de tamanho de tela e fontes. Deixe sua UI exibir um layout aceitável em diferentes tamanhos de tela!** | 8 | **Um plugin Flutter para adaptação de tamanho de tela e fontes. Deixe sua UI exibir um layout aceitável em diferentes tamanhos de tela!** |
8 | 9 |
@@ -9,7 +9,7 @@ class MyApp extends StatelessWidget { | @@ -9,7 +9,7 @@ class MyApp extends StatelessWidget { | ||
9 | Widget build(BuildContext context) { | 9 | Widget build(BuildContext context) { |
10 | // In first method you only need to wrap [MaterialApp] with [ScreenUtilInit] and that's it | 10 | // In first method you only need to wrap [MaterialApp] with [ScreenUtilInit] and that's it |
11 | return ScreenUtilInit( | 11 | return ScreenUtilInit( |
12 | - useInheritedMediaQuery: true, | 12 | + useInheritedMediaQuery: false, |
13 | builder: (_, child) { | 13 | builder: (_, child) { |
14 | return MaterialApp( | 14 | return MaterialApp( |
15 | debugShowCheckedModeBanner: false, | 15 | debugShowCheckedModeBanner: false, |
@@ -69,19 +69,13 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | @@ -69,19 +69,13 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | ||
69 | MediaQueryData get mediaQueryData => _mediaQueryData!; | 69 | MediaQueryData get mediaQueryData => _mediaQueryData!; |
70 | 70 | ||
71 | MediaQueryData get newData { | 71 | MediaQueryData get newData { |
72 | - if (widget.useInheritedMediaQuery) { | ||
73 | - final data = MediaQuery.maybeOf(context); | 72 | + final data = MediaQuery.maybeOf(context); |
74 | 73 | ||
75 | - if (data != null) { | 74 | + if (data != null) { |
75 | + if (widget.useInheritedMediaQuery) { | ||
76 | wrappedInMediaQuery = true; | 76 | wrappedInMediaQuery = true; |
77 | - return data; | ||
78 | - } | ||
79 | - } else { | ||
80 | - final data = MediaQuery.maybeOf(context); | ||
81 | - | ||
82 | - if (data != null) { | ||
83 | - return data; | ||
84 | } | 77 | } |
78 | + return data; | ||
85 | } | 79 | } |
86 | 80 | ||
87 | return MediaQueryData.fromView(View.of(context)); | 81 | return MediaQueryData.fromView(View.of(context)); |
@@ -127,18 +121,21 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | @@ -127,18 +121,21 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | ||
127 | if (mediaQueryData.size == Size.zero) return const SizedBox.shrink(); | 121 | if (mediaQueryData.size == Size.zero) return const SizedBox.shrink(); |
128 | if (!wrappedInMediaQuery) { | 122 | if (!wrappedInMediaQuery) { |
129 | return MediaQuery( | 123 | return MediaQuery( |
130 | - // key: GlobalObjectKey('mediaQuery'), | ||
131 | data: mediaQueryData, | 124 | data: mediaQueryData, |
132 | child: Builder( | 125 | child: Builder( |
133 | builder: (__context) { | 126 | builder: (__context) { |
127 | + ScreenUtil.init( | ||
128 | + __context, | ||
129 | + designSize: widget.designSize, | ||
130 | + splitScreenMode: widget.splitScreenMode, | ||
131 | + minTextAdapt: widget.minTextAdapt, | ||
132 | + scaleByHeight: widget.scaleByHeight, | ||
133 | + ); | ||
134 | final deviceData = MediaQuery.maybeOf(__context); | 134 | final deviceData = MediaQuery.maybeOf(__context); |
135 | final deviceSize = deviceData?.size ?? widget.designSize; | 135 | final deviceSize = deviceData?.size ?? widget.designSize; |
136 | - ScreenUtil.init(__context, | ||
137 | - designSize: widget.designSize, | ||
138 | - splitScreenMode: widget.splitScreenMode, | ||
139 | - minTextAdapt: widget.minTextAdapt, | ||
140 | - scaleByHeight: widget.scaleByHeight); | ||
141 | - return Container( | 136 | + return MediaQuery( |
137 | + data: MediaQueryData.fromView(View.of(__context)), | ||
138 | + child: Container( | ||
142 | width: deviceSize.width, | 139 | width: deviceSize.width, |
143 | height: deviceSize.height, | 140 | height: deviceSize.height, |
144 | child: FittedBox( | 141 | child: FittedBox( |
@@ -152,34 +149,38 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | @@ -152,34 +149,38 @@ class _ScreenUtilInitState extends State<ScreenUtilInit> | ||
152 | height: deviceSize.height, | 149 | height: deviceSize.height, |
153 | child: widget.builder(__context, widget.child), | 150 | child: widget.builder(__context, widget.child), |
154 | ), | 151 | ), |
155 | - )); | 152 | + ), |
153 | + ), | ||
154 | + ); | ||
156 | }, | 155 | }, |
157 | ), | 156 | ), |
158 | ); | 157 | ); |
159 | } | 158 | } |
160 | 159 | ||
161 | - ScreenUtil.init(_context, | ||
162 | - designSize: widget.designSize, | ||
163 | - splitScreenMode: widget.splitScreenMode, | ||
164 | - minTextAdapt: widget.minTextAdapt, | ||
165 | - scaleByHeight: widget.scaleByHeight); | 160 | + ScreenUtil.init( |
161 | + _context, | ||
162 | + designSize: widget.designSize, | ||
163 | + splitScreenMode: widget.splitScreenMode, | ||
164 | + minTextAdapt: widget.minTextAdapt, | ||
165 | + scaleByHeight: widget.scaleByHeight, | ||
166 | + ); | ||
166 | final deviceData = MediaQuery.maybeOf(_context); | 167 | final deviceData = MediaQuery.maybeOf(_context); |
167 | - | ||
168 | final deviceSize = deviceData?.size ?? widget.designSize; | 168 | final deviceSize = deviceData?.size ?? widget.designSize; |
169 | return Container( | 169 | return Container( |
170 | - width: deviceSize.width, | ||
171 | - height: deviceSize.height, | ||
172 | - child: FittedBox( | ||
173 | - fit: BoxFit.none, | ||
174 | - alignment: Alignment.center, | ||
175 | - child: Container( | ||
176 | - width: widget.scaleByHeight | ||
177 | - ? (deviceSize.height * widget.designSize.width) / | ||
178 | - widget.designSize.height | ||
179 | - : deviceSize.width, | ||
180 | - height: deviceSize.height, | ||
181 | - child: widget.builder(_context, widget.child), | ||
182 | - ), | ||
183 | - )); | 170 | + width: deviceSize.width, |
171 | + height: deviceSize.height, | ||
172 | + child: FittedBox( | ||
173 | + fit: BoxFit.none, | ||
174 | + alignment: Alignment.center, | ||
175 | + child: Container( | ||
176 | + width: widget.scaleByHeight | ||
177 | + ? (deviceSize.height * widget.designSize.width) / | ||
178 | + widget.designSize.height | ||
179 | + : deviceSize.width, | ||
180 | + height: deviceSize.height, | ||
181 | + child: widget.builder(_context, widget.child), | ||
182 | + ), | ||
183 | + ), | ||
184 | + ); | ||
184 | } | 185 | } |
185 | } | 186 | } |
-
Please register or login to post a comment