如何给所有 Row 孩子相同的高度

Posted

技术标签:

【中文标题】如何给所有 Row 孩子相同的高度【英文标题】:How to give all Row children the same height 【发布时间】:2020-12-15 12:32:21 【问题描述】:

我很难让 Row 的两个孩子,即 TextField 和 RaisedButton 的高度相同。按钮的高度总是较短。我可以用 SizedBox 做到这一点,但它是固定高度并且是手动的。这是我的代码和 UI 现在的样子:

                   Row(
                     children: [
                       Padding(
                         padding: _padding,
                         child: SizedBox(
                           width: 200,
                           child: TextField(
                             keyboardType: TextInputType.number,
                             decoration: InputDecoration(
                                 labelText: 'Answer',
                                 border: OutlineInputBorder(borderRadius: BorderRadius.circular(4.0))
                             ),
                           ),
                         ),
                       ),
                       RaisedButton(
                         onPressed: _evaluate,
                         child: Text('Evaluate'),
                       ),
                     ],
                   ),

我想知道是否有推荐的方法如何使 Row 的孩子们的高度相同。

顺便说一下,侧面的黑线是模拟器框架的。

【问题讨论】:

【参考方案1】:

用容器包裹textfield并给它高度是不好的,某些情况下textfield在打字时会破裂,你可以在你里面使用Textfield -> InputDecoration;

contentPadding: EdgeInsets.all(20),

您可以从这里调整文本字段的高度。

【讨论】:

【参考方案2】:

您可以用SizedBox 小部件包装Row 小部件并为其提供所需的height

我以你的代码为例添加了一个演示:

 SizedBox( // new line 
      height: 60, // give it a desired height here
      child: Row(
        children: [
          Padding(
            padding: _padding,
            child: SizedBox(
              width: 200,
              child: TextField(
                keyboardType: TextInputType.number,
                decoration: InputDecoration(
                    labelText: 'Answer',
                    border: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(4.0))),
              ),
            ),
          ),
          RaisedButton(
            onPressed: _evaluate,
            child: Text('Evaluate'),
          ),
        ],
      ),
    ),

【讨论】:

我喜欢这个答案,但如果这一行是文本字段列的子行怎么办?如何保证行间距一致? 我真的不明白你想让我画什么样的例子,但Row 具有mainAxisAlignmentcrossAxisAlignment 的属性来分隔它的孩子。与Column 相同【参考方案3】:

尝试用 SizedBox 或固定高度的容器包裹 Row

【讨论】:

以上是关于如何给所有 Row 孩子相同的高度的主要内容,如果未能解决你的问题,请参考以下文章

触发孩子时如何更改父母的值?

只重新布置孩子而不是所有的树

我怎样才能让 Flexbox 孩子 100% 的高度是他们的父母?

防止绝对孩子扩展父母

React:如何使用相同类型的多个上下文,同时允许孩子从所有上下文中读取数据

SQL Recursive:获取孩子的父值