【问题标题】:Auto expanding Container in flutter -- for all devices颤动中自动扩展容器——适用于所有设备
【发布时间】:2019-08-31 18:00:44
【问题描述】:

我需要一个包含一些文本的容器来自动展开。我有一个 API 调用,可以是 5 个词到 500 个词之间的任何内容。我不想只有 1 个固定大小但包含 10 个字的巨大。

我尝试过 Expanded() 和 SizedBox.Expand(),但我可能用错了

Card( 
 elevation: defaultTargetPlatform ==
      TargetPlatform.android ? 5.0 : 0.0,
  child: Column(
    children: <Widget>[
      Container(
        margin: const EdgeInsets.all(0.0),
        padding: const EdgeInsets.all(2.0),
        decoration: BoxDecoration(color: Colors.black),
        width: _screenSize.width,
        height: 250,
        child: Column(
          children: <Widget>[
            Container(
              color: Colors.black,
              width: _screenSize.width,
              height: 35,
              child: Padding(
                padding: const EdgeInsets.only(
                    left: 15, top: 11),
                child: Text("Title".toUpperCase(),
                  style: TextStyle(
                      color: Colors.white
                  ),
                ),
              ),
            ),
            Container(
              color: Colors.white,
              width: _screenSize.width,
              height: 210,
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                mainAxisAlignment: MainAxisAlignment.start,
                children: <Widget>[
                  Padding(
                    padding: const EdgeInsets.only(top: 8, bottom: 5),
                    child: Text("Title of expanding text", style: TextStyle(
                      fontSize: 25,
                    ),
                    ),
                  ),
                  Text("Expanding text", style: TextStyle(
                      fontSize: 35,
                      fontWeight: FontWeight.w800
                  ),),
                ],
              ),
            ),
          ],
        ),
      ),
    ],
  ),
),

我只需要扩展容器,但要保持小/变大

【问题讨论】:

  • 你找到解决办法了吗??

标签: flutter containers expand


【解决方案1】:

您是否尝试过完全不指定height?在这种情况下,Container 应该根据孩子换行。

否则,小部件有一个孩子,但没有高度,没有宽度,没有 约束,并且没有对齐,并且容器通过 从父级到子级的约束以及自身的大小以匹配 孩子。

以上内容摘自 Container 的官方 Flutter 文档。

这里是 Flutter 官方文档link

【讨论】:

  • 谢谢解决了。我也只是添加了一些填充,这样它就不会触及容器的底部
  • 当一个孩子是一个列表视图怎么办?
  • 上述方法会为ListView 抛出错误,因为ListView 总是倾向于将自己包裹在父窗口小部件的范围内。
  • 这不适用于 GridView 或 ListView
  • 容器不能自动高度未知高度的 Listview 子项。
【解决方案2】:

您可以使用FittedBox,这将根据可用区域调整您的文本大小。

你可以这样使用它:

FittedBox(child: Text('...............Your text...............'));

【讨论】:

  • 这也会自动减少fontSize
  • 你可以使用:FittedBox(fit: BoxFit.none) @CopsOnRoad
【解决方案3】:

我建议您使用约束...这将根据文本孩子的要求设置容器高度。请看示例...

Container(
    constraints: BoxConstraints(
    maxHeight: double.infinity,
),
child: Column(
children: [
  Text(
    'Hello flutter...i like flutter...i like google...',
    softWrap: true,
    style: TextStyle(
        color: Colors.white, fontSize: 20 , ),

  ),],),)

【讨论】:

    【解决方案4】:

    我也有一个容器,里面有一个文本小部件,它不会随着文本字符数的增加而缩放。制作小部件树 Container -> IntrinsicWidth -> Text/TextField,它似乎对我来说很好玩。

    IntrinsicWidth 会将容器的大小缩放到其子级。

    【讨论】:

      猜你喜欢
      • 2012-08-07
      • 2018-03-20
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      相关资源
      最近更新 更多