Closed kevin-lemon closed 1 year ago
me too,哈哈哈
me too,哈哈哈
我试了下,用方式二加载可以,不包裹
当使用方式二加载时不会有这个问题: void main() async { // Add this line await ScreenUtil.ensureScreenSize(); runApp(MyApp()); } ... MaterialApp( ... builder: (ctx, child) { ScreenUtil.init(ctx); return Theme( data: ThemeData( primarySwatch: Colors.blue, textTheme: TextTheme(bodyText2: TextStyle(fontSize: 30.sp)), ), child: HomePage(title: 'FlutterScreenUtil Demo'), ); }, )
useInheritedMediaQuery: true
这样也可以,但是会造成父组件不断的 rebuild
useInheritedMediaQuery: true
这样也可以,但是会造成父组件不断的 rebuild
不断rebuild也很头疼,我直接不包了,反正只是用到了计算下dp
useInheritedMediaQuery: true
这样也可以,但是会造成父组件不断的 rebuild不断rebuild也很头疼,我直接不包了,反正只是用到了计算下dp
仔细看看源码,方法二相当于 useInheritedMediaQuery: true
useInheritedMediaQuery: true
这样也可以,但是会造成父组件不断的 rebuild不断rebuild也很头疼,我直接不包了,反正只是用到了计算下dp
仔细看看源码,方法二相当于 useInheritedMediaQuery: true
那这个无解了?
我运行了一下demo , 输入框在底部的时候 是会弹起到键盘上方的啊 原来是bottomSheet, 试了一下 确实没有弹起 . 可以先参考一下这个写法:
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return Container(
height: 200.w +
MediaQuery.of(context).viewInsets.bottom,
color: Colors.amber,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
const Text('Modal BottomSheet'),
Spacer(),
TextField(),
ElevatedButton(
child: const Text('Close BottomSheet'),
onPressed: Navigator.of(context).pop,
),
SizedBox(
height: MediaQuery.of(context)
.viewInsets
.bottom),
],
),
),
);
},
);
不会多次调用build, 也会在弹起键盘时把输入框顶起来
我运行了一下demo , 输入框在底部的时候 是会弹起到键盘上方的啊 原来是bottomSheet, 试了一下 确实没有弹起 . 可以先参考一下这个写法:
showModalBottomSheet<void>( context: context, builder: (BuildContext context) { return Container( height: 200.w + MediaQuery.of(context).viewInsets.bottom, color: Colors.amber, child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: <Widget>[ const Text('Modal BottomSheet'), Spacer(), TextField(), ElevatedButton( child: const Text('Close BottomSheet'), onPressed: Navigator.of(context).pop, ), SizedBox( height: MediaQuery.of(context) .viewInsets .bottom), ], ), ), ); }, );
不会多次调用build, 也会在弹起键盘时把输入框顶起来
用我的代码,外面screenutils包裹,我这边必现,在3.10.0的flutter版本
+1
https://github.com/flutter/flutter/issues/126585
我是在Flutter的github上面找到这个问题的,我也很奇怪,之前一直没问题,现在就出这种问题,我一开始也是怀疑第三方库,我一个一个试,最后真的试到万念俱灰了,然后就真的试出来了...
我是在Flutter的github上面找到这个问题的,我也很奇怪,之前一直没问题,现在就出这种问题,我一开始也是怀疑第三方库,我一个一个试,最后真的试到万念俱灰了,然后就真的试出来了...
现在你咋解决了?
flutter/flutter#126585 我是在Flutter的github上面找到这个问题的,我也很奇怪,之前一直没问题,现在就出这种问题,我一开始也是怀疑第三方库,我一个一个试,最后真的试到万念俱灰了,然后就真的试出来了...
现在你咋解决了?
就是用了useInheritedMediaQuery: true就没问题,不过有一个点要注意的是,你要看清楚的inputTextfiled是否嵌在Scaffold,因为Scaffold在默认状态下会帮你自动适配键盘弹起的情况...
很抱歉出现这样的问题, 现在可以先升级到5.8.2, 将useInheritedMediaQuery默认值改为true了
很抱歉出现这样的问题, 现在可以先升级到5.8.2, 将useInheritedMediaQuery默认值改为true了
我这边出现只要键盘弹起来,当前所有 UI 视图栈(当前页外面的所有页面)在键盘弹起或者消失的过程中,一直 rebuild 的情况
很抱歉出现这样的问题, 现在可以先升级到5.8.2, 将useInheritedMediaQuery默认值改为true了
请问有解决办法吗?我不需要一直 rebuild。
很抱歉出现这样的问题, 现在可以先升级到5.8.2, 将useInheritedMediaQuery默认值改为true了
请问有解决办法吗?我不需要一直 rebuild。
我的项目可以这样解决,你也可以试试,一定记得 useInheritedMediaQuery 设置为 false。
can try this code with flutter 3.10.0 and flutter_screenutil: 5.8.1
就是当我用这个插件的时候(5.8.1最新版和5.7.0以前用的都尝试了),在3.7.11版本的flutter,是完全没问题的,但是当我升级flutter到3.10.0时,打开键盘不会触发bottomsheet的build了,导致页面无法移动被遮挡,在3.7.11是触发的,不止是bottomsheet,其他的带输入框页面似乎也有这个问题。
当使用方式二加载时不会有这个问题: void main() async { // Add this line await ScreenUtil.ensureScreenSize(); runApp(MyApp()); } ... MaterialApp( ... builder: (ctx, child) { ScreenUtil.init(ctx); return Theme( data: ThemeData( primarySwatch: Colors.blue, textTheme: TextTheme(bodyText2: TextStyle(fontSize: 30.sp)), ), child: HomePage(title: 'FlutterScreenUtil Demo'), ); }, )