【问题标题】:Flutter: constrain width of text in column to width of other childrenFlutter:将列中文本的宽度限制为其他子项的宽度
【发布时间】:2020-11-09 14:42:21
【问题描述】:

我试图在 Flutter 中实现这一点,但就是想不通。用图片更容易解释:

我需要文本子项的最大宽度受列中另一个子项的约束(其宽度可变 - 它是 AnimatedContainer,其中宽度在动画中发生变化)。我该怎么做?

这是我到目前为止所得到的,但文本宽度可以尽可能扩大。 This is a similar question,但不能解决问题 - 使用 CrossAxisAlignment.stretch 并不能达到我的需要。

Column(
  mainAxisSize: MainAxisSize.min,
  children: <Widget>[
    AnimatedContainer(
      width: _isSelected ? 100 : 50,
      height: 100,
    ),
    Text(
      "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua",
      overflow: TextOverflow.ellipsis,
    ),
  ]
)

【问题讨论】:

    标签: flutter layout


    【解决方案1】:

    您还可以将Text 小部件包装在另一个AnimatedContainer 中,并将相同的条件宽度传递给它,该宽度将传递给它上面的AnimatedContainer

    Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            AnimatedContainer(
              duration: Duration(seconds: 2),
              width: _isSelected ? 100 : 50,
              height: 100,
            ),
            AnimatedContainer(
              duration: Duration(seconds: 2),
              width: _isSelected ? 100 : 50,
              child: Text(
                "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore",
                overflow: TextOverflow.ellipsis,
              ),
            ),
          ],
        )
    

    【讨论】:

    • 我意识到我的问题过于简化了! Container实际上是一个AnimatedContainer,所以在动画过程中宽度会发生变化。我已经更新了我的问题。很抱歉!
    • 哦,好吧。最初我也认为我必须在这里遗漏一些东西:P。我现在已经编辑了答案。
    • 是的,当然!现在看起来真的很明显:P 没有咖啡,工作太多了,哈哈。我的做法略有不同 - 我将整个 Column 放入 AnimatedContainer
    • 好主意。为什么用一个可以用两个。现在事情很清楚了。缺乏咖啡也反映在你原来的问题中。我逐字阅读了大约 5 次,以确保我正确理解了这个问题并且我没有忽略一些细节。 :D
    猜你喜欢
    • 2018-05-07
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 2012-02-27
    • 2023-02-06
    • 2012-05-24
    • 2010-10-11
    • 1970-01-01
    相关资源
    最近更新 更多