在聊天应用程序中构建聊天气泡。我无法控制ListView.builder的Container子元素的宽度。子容器总是采用ListView.builders父容器的全宽:
Expanded -> Container width.
我的目标是:消息泡的宽度尽可能小,同时仍然包含消息文本,但不大于屏幕宽度的75%。
对于这个简化的示例,请忽略文本换行。
为什么聊天气泡会获得这个全屏宽度,以及在哪里?
超级简化的小部件布局示例:
这是一个图片链接,无法提供更多信息。
Expanded -> Container width.
我的目标是:消息泡的宽度尽可能小,同时仍然包含消息文本,但不大于屏幕宽度的75%。
对于这个简化的示例,请忽略文本换行。
为什么聊天气泡会获得这个全屏宽度,以及在哪里?
超级简化的小部件布局示例:
@override
Widget build(BuildContext context) {
return Container(
height: safeHeight,
child: Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: messages.length,
itemBuilder: (ctx, i) => chatBubble(messages[i]),
)
),
Container(
height: 50,
child: TextField(/* stuff */),
)
]
)
);
}
chatBubble(Message msg) {
return Padding(
padding: EdgeInsets.all(8.0),
child: Container(
color: Colors.lightBlue,
child: Text(msg.text),
constraints: BoxConstraints(
maxWidth: screenWidth * 0.75,
),
)
)
}
这是一个图片链接,无法提供更多信息。
Column
小部件将chatBubble()
的响应包装起来,同时设置mainAxisSize: MainAxisSize.min
。 - Sanjay Sharma