【问题标题】:Flutter: BoxConstraints forces an infinite height颤振:BoxConstraints 强制无限高度
【发布时间】:2020-04-27 17:52:17
【问题描述】:

我正在尝试在 TextFormField 小部件上使用 expand 属性。

我的代码如下所示:

body: ListView(
        children: <Widget>[
          ListTile(
            leading: CircleAvatar(
              backgroundImage: CachedNetworkImageProvider(
                currentUser.photoUrl
              )
            ),
            title: Container(
              color: Colors.blue,
              width: 250.0,
              child: TextFormField(
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 20.0,
                  color: Colors.white
                ),
                cursorColor: Colors.white,
                maxLines: null,
                minLines: null,
                expands: true,
                controller: captionController,
                decoration: InputDecoration(
                  hintText: 'Write something...',
                  border: InputBorder.none,
                  hintStyle: TextStyle(
                    fontSize: 20.0,
                    fontWeight: FontWeight.bold
                  ),
                  fillColor: Colors.blue
                )
              )
            )
          ),
  ]
)

我遇到的问题是,每次运行代码时,我都会收到错误消息:BoxConstraints forces an infinite height。请问当文本字段的内容长度溢出时,如何扩展文本字段的高度。

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    尝试为Container() 提供一个有限的高度。 expands 尝试根据父级高度(在您的情况下为 null)调整 TextFormField 的大小。

      body: ListView(
        children: <Widget>[
          ListTile(
            leading: CircleAvatar(
              backgroundImage: CachedNetworkImageProvider(
                currentUser.photoUrl
              )
            ),
            title: Container(
              height: 200.0, // Add your own custom height here
              //Rest of the code is same
            )
          ),
        ]
      ),
    

    【讨论】:

    • 你好。添加height 后,错误仍然存​​在,但我注意到文本字段没有扩展。我的错,当我第一次接受这个作为答案时,我没有测试扩展部分。我的目标是使文本字段垂直扩展,但是在输入的文本溢出高度后,文本字段变成了滚动视图。
    • 我认为height 与使用maxLines 相同,但是当我尝试使用expands 时,颤振要求我将maxLinesminLines 设置为null。
    • 我刚刚提供了一个解决了您遇到的错误的答案。所以我认为接受答案是正确的做法。无论如何,在阅读了您的评论后,我相信您的用例 expands 不是要走的路。检查此question。它可能有你要找的东西。
    • 在问题的最后,我添加了while still using expands,这意味着我仍然希望expands 行为保持不变。问题的目标不仅仅是消除错误。另外,我已经检查了那个问题,没有一个答案符合我想要实现的目标。
    • 请问如何在仍然使用扩展的同时修复此错误。此文本不会让用户知道您希望在溢出时扩展文本字段高度。这仅意味着您希望错误消失。你不能指望用户通过问一个模棱两可的问题来自动推断你想要什么。您可以参考How To Ask 部分,这样以后就不会发生这种事情了。干杯!
    【解决方案2】:

    解释 ==>

    解决方案 1) 当您使用 ListView 时,它实际上有无限的空间可以展开,这就是错误出现的原因。现在更改 ListView ==> Column 将扩展空间限制为视口的大小。 并且还使用 Expanded 小部件包装 ListTile,这意味着 ListTile 小部件将占用 Column 可用的整个空间

    DartPad 链接 ==> https://dartpad.dev/0acdc3ebef330f717813fc5163de0ccb

    解决方案 2) 现在假设您仍然需要它是一个列表视图,因为它有多个元素并且它们是可滚动的。现在要实现这一点,您可以用 Container 包装 Listtile 并为 Container 提供一些 BoxConstraints,其 maxHeight 是您可以从 MediaQuery 获得的视口大小

    DartPad 链接 ==> https://dartpad.dev/22f30c0aaab31bff8627226cc21875f1

    【讨论】:

      猜你喜欢
      • 2020-12-22
      • 1970-01-01
      • 2019-11-04
      • 2023-04-09
      • 1970-01-01
      • 2019-02-25
      • 2022-01-04
      • 1970-01-01
      • 2021-10-15
      相关资源
      最近更新 更多