我曾经使用
isScrollControlled: true
和 padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom)
来修复隐藏的 Bottomsheet 来解决此问题,但最近我开始使用 ScreenUtilInit 来处理响应式内容;但现在,如果使用 ScreenUtilInit 小部件包装我的应用程序,bottomSheet 不会显示在键盘顶部!没有它一切都可以正常工作。
有人可以给我建议吗? (如何避免这种情况,或者响应式内容的更好解决方案)并提前致谢。
这是我的代码:
void main() {
runApp(
ScreenUtilInit(
designSize: Size(375, 812),
builder: (context, child) => MyApp(),
),
);
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: true,
floatingActionButton: FloatingActionButton(
onPressed: () {
showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (BuildContext context) {
return Container(
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
TextField(
autofocus: true,
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Enter a search term'),
),
SizedBox(height: 5.0),
TextField(
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Enter a search term'),
),
],
),
);
},
);
},
child: Icon(Icons.add),
),
appBar: AppBar(
title: Text('Scrollable Sheet Example'),
),
body: Container(
child: Center(
child: Text('Main Content'),
),
),
);
}
}
我通过添加
useInheritedMediaQuery: true,
解决了这个问题,如下所示:
void main() {
runApp(
ScreenUtilInit(
designSize: Size(375, 812),
useInheritedMediaQuery: true,
builder: (context, child) => MyApp(),
),
);
}
感谢这个答案这里