Flutter Row 没有占用完整的 Scaffold 高度

Posted

技术标签:

【中文标题】Flutter Row 没有占用完整的 Scaffold 高度【英文标题】:Flutter Row not taking full Scaffold height 【发布时间】:2020-08-21 01:28:17 【问题描述】:

我正在研究一个带有颤振的平板电脑应用程序的骨架,我正面临一个可能非常简单的问题,但我很难弄清楚这里发生了什么。

应用程序的骨架基本上应该是这样的:

为此,我编写了一个简单的Stateless 类,如下所示:

class BaseDetailsRoute extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return Scaffold(
      backgroundColor: Colors.grey,
      body: Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Flexible(flex: 1, child: _selectionColumn()),
          Flexible(flex: 7, child: _contentArea())
        ],
      ),
    );
  

  Widget _contentArea() => Container(color: Colors.orange,);

  Column _selectionColumn() => Column(
    children: <Widget>[
      Expanded(child: Container(color: Colors.blue,))
    ],
  );

这给了我几乎预期的结果:

这里的小问题在屏幕底部,如您所见,在Scaffold 中,我已经放置了backgroundColor: Colors.grey,并且在将Row 渲染到屏幕中之后,似乎有些因为我不能让它占据整个可用高度,而且我仍然在底部看到了 Scaffold 的一点灰色背景色。

我尝试将整个 Scaffold 包装在一个 SafeArea 小部件中,但它不起作用。

我怎样才能以一种简单的方式解决这个问题,这意味着不必添加一堆其他小部件?

【问题讨论】:

【参考方案1】:

这有点奇怪,但您的代码按我的预期工作(对于纵向和横向)。你用的是什么模拟器?

见图:Pixel 2 API 29 Emulator Portrait Pixel 2 API 29 Emulator Lanscape

【讨论】:

好的,很高兴知道,我使用的是真实设备,在这种情况下是平板电脑,所以,它可能是平板电脑正在生产的东西?,很奇怪 不,不幸的是,我只能使用我现在拥有的一台平板电脑,我将尝试在模拟器上进行测试。【参考方案2】:

你可以试试吗

     child: Column(
                mainAxisSize:  MainAxisSize.max,
                children: <Widget>[

让我知道它是否有效

【讨论】:

谢谢,但不是,请注意,列位于脚手架主体中的主行内,因此列“似乎”不是问题所在,我认为。

以上是关于Flutter Row 没有占用完整的 Scaffold 高度的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 如何让方形小部件连续占用其最大可能空间?

Flutter SetState 不更新文本

Flutter布局全解

Flutter - 不能使用灵活的内部填充来进行文本换行

flutter 页面布局 Paddiing Row Column Expanded 组件

图像不占用DataGridCell中的整个空间