0

我有一个包含Columnof的视图Widgets。其中一个Widgets包含一个将打开底部工作表的按钮。在该底部表中,用户可以点击 aTextField并打开键盘,这将使底部表保持在键盘上方。

当我按原样执行此操作时,我得到Bottom Overflowed by XXX Pixels. 黄色框在我的底页后面,就在键盘的正上方。

我曾尝试将Columna包裹起来,SingleChildScrollView但是当我这样做时,我的所有Widgets东西都Column消失了。

我也尝试过包裹在脚手架中,但也没有用:

例子:

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.

4

1 回答 1

0

正确的解决方案确实是将您看到的内容包装到可滚动的小部件中,例如SingleChildScrollView. 但是,当且仅当可滚动小部件的内容不是无限时,才会发生这种情况。

实际上,您的小部件只是“消失”的原因是内部小部件强制无限高度(在本例中为Expanded小部件),而父级不强制最大高度(SingleChildScrollView),因为它希望显示任意数量的小部件. 这会导致内在/概念错误(如果您考虑一下),因此框架会引发错误。

这有点取决于您要实现的目标,但根据经验,在这种情况下,您可能希望将可滚动小部件包装在SizedBox/ Container/ConstrainedBox中,以便指定高度,因此您强制它不是无限的.

在这种情况下,您的子小部件可以毫无问题地使用该Expanded逻辑。让我知道这是否有帮助。

于 2021-10-19T21:31:47.960 回答