【发布时间】:2021-12-06 16:00:22
【问题描述】:
我有一个包含Column 或Widgets 的视图。其中一个Widgets 包含一个用于打开底部工作表的按钮。在该底部表中,用户可以点击TextField 并打开键盘,这将使底部表保持在键盘上方。
当我按原样执行此操作时,我得到Bottom Overflowed by XXX Pixels。黄色框在我的底页后面,就在键盘的正上方。
我曾尝试将Column 包装在SingleChildScrollView 中,但是当我这样做时,Column 中的所有Widgets 都会消失。
我也尝试过用脚手架包裹,但也没有用:
示例:
Scaffold(
resizeToAvoidBottomInset: false, // tried setting to true as well
body: Column...
有什么建议吗?
以下是一些基本设置:
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildWidget1(),
_buildWidget2(),
_buildWidget3(),
// When wrapped in a SingleChildScrollView
// this seems to be making everything in the column
// disappear...
Expanded(child: Container()),
etc.
],
);
}
void _bottomSheetButtonPressed(context) {
showModalBottomSheet(
barrierColor: Colors.transparent,
backgroundColor: Colors.transparent,
context: context,
isScrollControlled: true,
builder: (context) {
return Padding(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: Container(
decoration: BoxDecoration(
color: Colors.transparent,
borderRadius: BorderRadius.only(
topLeft: const Radius.circular(24),
topRight: const Radius.circular(24),
),
),
child: _showBottomSheetItemsWidget(),
),
);
},
);
}
颜色是透明的,所以我可以看到底片后面发生了什么。
因此,我遇到了Bottom Overflowed 问题...这就是我要解决的问题。
更新:
在进一步调试之后,我确实看到了我认为使我所有的Widgets 消失的原因。我有一个Expanded Widget 有一个Container 的孩子来分隔我的一些Widgets。
【问题讨论】:
-
尝试 isScrollControlled: false,。如果不工作,那么用 Container 包裹你的列并给它高度和宽度。如果仍然无法正常工作,则使用单子控制器包装容器。
-
@ShailandraRajput isScrollControlled 需要为真,以便工作表保持在键盘上方。我尝试了其他建议,但仍然没有运气。在我看到所有小部件都消失的场景中,我还添加了更多上下文。
标签: flutter keyboard bottom-sheet scaffold singlechildscrollview