Flutter - 在一行中只对齐一个小部件
Flutter - Align only one widget inside of a Row
我有一个高度可以变化的文本,后跟一个 PopupMenuButton。我希望文本在垂直轴上居中对齐(这样当只有 1 行文本时就不会出现奇怪的白色 space)但是 PopupMenuButton 保持在右上角,无论文本的高度。因此,使用 crossAxisAlignement 在这里不起作用,因为所有小部件都会受到影响。在文本或 PopupMenuButton 上使用 Align 小部件不起作用,textAlign 也不起作用似乎任何解决方案都必须在 Row 级别而不是在其子级别上实施,这是有道理的。
现在我正在使用一个行来包含这 2 个小部件,但如果我想要之前提到的行为,我不确定它是否是我需要的。是否有针对行的解决方案,或者我可以使用的其他小部件?
这是目前的代码。谢谢
Row(
children: [
Expanded(
child: RichText(
text: TextSpan(), // bunch of text in there
)
)
),
SizedBox( // To box in the 3 dots icon (material design forces 48px otherwise)
height: 24,
width: 24,
child: PopupMenuButton(
padding: EdgeInsets.all(0),
onSelected: menuSelect,
itemBuilder: (BuildContext context) {
return [
PopupMenuItem(value: 0, child: Text('Read', textAlign: TextAlign.center,),),
PopupMenuItem(value: 1, child: Text('Delete', textAlign: TextAlign.center,),)
];
},
),
)
],
)
这是一种方法:
- 用
Align(alignment: Alignment.topRight)
包裹你的 SizedBox
- 用
IntrinsicHeight
包裹你的 Row
以便横轴
不拉伸
或者,如果您不熟悉 Stack 小部件,您可能想查看它。
我有一个高度可以变化的文本,后跟一个 PopupMenuButton。我希望文本在垂直轴上居中对齐(这样当只有 1 行文本时就不会出现奇怪的白色 space)但是 PopupMenuButton 保持在右上角,无论文本的高度。因此,使用 crossAxisAlignement 在这里不起作用,因为所有小部件都会受到影响。在文本或 PopupMenuButton 上使用 Align 小部件不起作用,textAlign 也不起作用似乎任何解决方案都必须在 Row 级别而不是在其子级别上实施,这是有道理的。
现在我正在使用一个行来包含这 2 个小部件,但如果我想要之前提到的行为,我不确定它是否是我需要的。是否有针对行的解决方案,或者我可以使用的其他小部件?
这是目前的代码。谢谢
Row(
children: [
Expanded(
child: RichText(
text: TextSpan(), // bunch of text in there
)
)
),
SizedBox( // To box in the 3 dots icon (material design forces 48px otherwise)
height: 24,
width: 24,
child: PopupMenuButton(
padding: EdgeInsets.all(0),
onSelected: menuSelect,
itemBuilder: (BuildContext context) {
return [
PopupMenuItem(value: 0, child: Text('Read', textAlign: TextAlign.center,),),
PopupMenuItem(value: 1, child: Text('Delete', textAlign: TextAlign.center,),)
];
},
),
)
],
)
这是一种方法:
- 用
Align(alignment: Alignment.topRight)
包裹你的 - 用
IntrinsicHeight
包裹你的Row
以便横轴 不拉伸
SizedBox
或者,如果您不熟悉 Stack 小部件,您可能想查看它。