我正在开发一个 Flutter 布局,其中有一个交通方式列表(例如步行、汽车、公共汽车、火车),并且我使用一个小部件Stack
将个人资料头像放在顶部。
这里的个人资料头像不在第 1 行内。
这是示例 UIPositioned
Stack(
children: [
Container(
color: Colors.grey[300],
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
Text("Walk"),
Text("Car"),
Text("Bus"),
Text("Train"),
],
),
),
Positioned(
top: 0,
right: 0,
child: CircleAvatar(
radius: 24,
child: Icon(Icons.person),
),
),
],
)
一切工作正常,直到文本变得太长,就像在这种情况下
,如果文本太长,这就是它绘制有问题的用户界面的方式
我尝试手动将文本包裹在固定宽度的 sizedbox 中,这样就不会重叠了。
但这并非在所有情况下都有效。
Stack(
children: [
Container(
color: Colors.grey[300],
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
Row(
children: [
Icon(Icons.directions_walk),
SizedBox(width: 8),
// Manually restrict text width to avoid overlap
SizedBox(
width: 80, // <-- hardcoded width
child: Text("Walk Walk Walk"),
),
],
),
Row(
children: [
Icon(Icons.directions_car),
SizedBox(width: 8),
Text("Car"),
],
),
Row(
children: [
Icon(Icons.directions_bus),
SizedBox(width: 8),
Text("Bus"),
],
),
Row(
children: [
Icon(Icons.train),
SizedBox(width: 8),
Text("Train"),
],
),
],
),
),
Positioned(
top: 0,
right: 0,
child: CircleAvatar(
radius: 24,
child: Icon(Icons.person),
),
),
],
)
有没有更好的方法来布局,这样Positioned
小部件就不会干扰下面的文本布局——不需要硬编码宽度