У меня есть текст, который может различаться по высоте, за которым следует PopupMenuButton. Я хочу, чтобы текст был выровнен по центру по вертикальной оси (чтобы не было странного белого пространства, когда есть только 1 линия текста), но PopupMenuButton оставался в верхнем правом углу, независимо от высоты текста . Таким образом, использование crossAxisAlignement здесь не работает, поскольку затрагиваются все виджеты. Использование виджета Align для текста или PopupMenuButton не работает, и textAlign тоже не работает. Кажется, любое решение должно быть реализовано на уровне Row, а не в его дочерних элементах, что имеет смысл.
На данный момент я использую строку для хранения этих двух виджетов, но я не уверен, что это то, что мне нужно, если я хочу, чтобы поведение упоминалось ранее. Есть ли решение для строки или другой виджет, который я могу использовать для этого?
Вот код в его нынешнем виде. Спасибо.
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,),)
];
},
),
)
],
)