【问题标题】:Text inside Expanded does not wrap after flutter upgrade颤振升级后扩展内的文本不换行
【发布时间】:2019-10-08 13:06:09
【问题描述】:

我在flutter stable频道,最近从v1.2.1升级到v1.5.4。在那之后,我的布局不再像以前那样工作了。

我有一个SliverGrid,里面有很多Column 小部件。在Column 内部,我有一个Image.asset() 和一个Text 小部件。我希望网格中的所有图像都具有相同的大小,但是文本可以是一两行长。

在颤振 v1.2.1 中,它曾经像这样工作

ConstrainedBox(
    constraints: BoxConstraints.expand(),
    child: Container(
      padding: EdgeInsets.fromLTRB(8, 0, 8, 0),
      child: Column(
        children: <Widget>[
          Image.asset('src'),
          Expanded(
              child: Text(
              widget.text,
              style: TextStyle(
                  fontWeight: FontWeight.bold, 
                  color: Colors.black),
            textAlign: TextAlign.center,
          ),
         ),
        ],
      ),
    ),
  ),

但在 v1.5.4 中执行相同操作时,只有文本的第一行可见,而在两行之前,我可以通过将 mainAxisSpacing: 11.0, 属性设置为更大的值来增加可见行的数量。

我也可以通过将Image.asset() 包装在Expanded 中来获得大致相同的行为。但是即使在摆弄了 flex 值之后,我也无法获得相同的布局。

这是我使用 v1.2.1 构建的最小示例的外观:

以及 v1.5.4 的外观:

我设置的示例代码位于Github。如果您想看到效果,显然需要使用两个不同的颤振版本来构建它。

然而,我的问题是,如何在 v1.2.1 和 v1.5.4 中实现相同的行为?

【问题讨论】:

    标签: android ios flutter flutter-layout flutter-sliver


    【解决方案1】:

    在尝试了一些不同的事情后,我得出结论,我必须将childAspectRatioSliverGrid 设置为小于1 的值。 并将mainAxisSpacing 设置为0。

    现在,看起来不错。但是,如果我可以根据 GridContent 更改 AspectRatio,那将是完美的,因为当我在一行中只有一行文本小部件时,空间就会比需要的多。

    【讨论】:

      【解决方案2】:

      添加 ma​​xLines

      Text(
        widget.text,
        style: TextStyle(
          fontWeight: FontWeight.bold, 
          color: Colors.black),
        textAlign: TextAlign.center,
        maxLines: 2,
      ),
      

      【讨论】:

      • 我之前和现在都试过了,但没有任何效果。
      猜你喜欢
      • 2022-08-05
      • 2018-12-24
      • 2023-02-02
      • 2019-07-22
      • 2021-11-20
      • 2021-06-06
      • 1970-01-01
      • 2021-06-17
      • 2021-03-05
      相关资源
      最近更新 更多