【问题标题】:Allow Widget Space to Expand Into允许小部件空间扩展到
【发布时间】:2021-10-02 07:59:54
【问题描述】:

我正在 Flutter 中构建一个表单,我已经找到了一些我正在寻找的解决方案,但它们感觉不太正确。

我想要做的是给表单域一个边距,它可以扩展到不改变包围小部件的边距所占用的空间。我想这样做的原因是,当显示验证器错误文本时,颤动的表单字段会改变高度。

我目前找到的解决方案是使用具有指定高度的容器,这足以让TextFormField 在显示错误文本时展开:

return Container(
      height: 100,
      child: TextFormField(
        decoration: InputDecoration(labelText: label),
        validator: (_) => 'Placeholder error text'
      ),
    );

它有效,但我不太喜欢这种解决方案,因为您必须提前知道 TextFormField 扩展后的高度。因此,例如,如果 maxLines 属性更改为 10,那么您还必须调整容器高度,直到找到适合它的高度。

有没有一种解决方案可以让您提供一些多余的空间,小部件可以扩展到而不改变总高度或多余的空间加上小部件的高度?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    尝试将文本表单字段包装在灵活的小部件中。

    return Column(
       children: <Widget>[
       Flexible(
        child:Padding(
          padding: const EdgeInsets.all(8.0),    
          child: TextFormField(
            decoration: InputDecoration(labelText: label),
            validator: (_) => 'Placeholder error text'
          ),
         ),
        ),
       ],
      );
    

    【讨论】:

    • hmmmm 我觉得这可能是在正确的轨道上,它确实可以在一个简单的设置中工作,但我使用的列在 SingleChildScrollView 内,当 Flexible在里面使用。由于Flexible 的大小我猜是无限的,它会抛出关于RenderBox was not laid out 的错误。
    • 所以我得到了这个工作,但不幸的是验证文本仍然导致整个灵活小部件展开。我想要的是外部小部件允许文本表单字段改变大小而不改变外部的大小。
    猜你喜欢
    • 2021-10-28
    • 2018-04-02
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2020-02-17
    • 2021-08-11
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多