颤动如何使具有灵活约束的容器的孩子居中

Posted

技术标签:

【中文标题】颤动如何使具有灵活约束的容器的孩子居中【英文标题】:Flutter how to center the child of a Container which has flexible constraints 【发布时间】:2020-05-12 02:53:21 【问题描述】:

我正在尝试构建一个消息框,就像在 Messenger 应用程序中使用的那样(例如:Whatsapp)。

没有试图集中文本:

容器必须高度和宽度都灵活,这取决于它所包含的消息(字符串)的长度。

这是我的代码

Container(
         constraints: BoxConstraints(minHeight: 40,maxHeight: 200,maxWidth: 300,minWidth: 40),
         decoration: BoxDecoration(
           borderRadius:  BorderRadius.circular(40),
         ),
         child: Padding(
           padding: const EdgeInsets.fromLTRB(15,0,15,0),
           child: new Text(msg,maxLines: null,),
         ),
    )

但是,每当我尝试将文本(包括填充)小部件居中时,Container 都会被强制使用它的最大约束。这些是我尝试过的一些方法

使用 Center 小部件 使用容器的alignment属性 用 Column 包装子节点并使用 mainAxisAlignment.center

所有这些方法的结果都是一样的:

有什么方法可以让 Text 小部件居中而不操纵盒子约束吗?

【问题讨论】:

【参考方案1】:

试试这个:

Container(
  constraints: BoxConstraints(minHeight: 40, maxHeight: 200, maxWidth: 360, minWidth: 40),
  decoration: BoxDecoration(color: Colors.grey, borderRadius: BorderRadius.circular(40)),
  padding: const EdgeInsets.fromLTRB(15, 0, 15, 0),
  child: Column(
    mainAxisSize: MainAxisSize.min,
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
      Text("Very long message"),
    ],
  ),
);

【讨论】:

以上是关于颤动如何使具有灵活约束的容器的孩子居中的主要内容,如果未能解决你的问题,请参考以下文章

如何使孩子处于绝对位置居中

扩展卡在颤动。孩子们满溢

如何使小部件在颤动中相互浮动[关闭]

如何在 Apache Royale 的布局中将孩子居中?

如何在颤动的列表视图中嵌套列表视图?

listView 颤动中未定义子项和填充