【发布时间】:2020-05-30 22:00:47
【问题描述】:
在聊天应用中构建聊天气泡。我无法控制 ListView.builder 的 Container 子项的宽度。子容器总是占据 ListView.builders 父容器的全部宽度:
Expanded -> Container width.
我想要实现的目标:消息气泡宽度尽可能小,同时仍包含消息文本,但不大于屏幕宽度的 75%。
忽略此简化示例的文本换行。
chatBubble 在哪里以及为什么会得到这个全屏宽度?
超级简化的小部件布局示例:
@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,
),
)
)
}
【问题讨论】:
-
尝试将
chatBubble()响应Column小部件与mainAxisSize: MainAxisSize.min放在一起
标签: flutter