颤动向右溢出一行中的两个文本
Flutter right overflow two texts in row
我想在一行中放置 2 个文本。我执行以下操作:
Row(crossAxisAlignment: CrossAxisAlignment.end, children: [
Flexible(
child: Text(text1,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left)),
Flexible(
child: Text(text2,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left)),
]),
这里我展示了预期的溢出结果和实际结果:
None 的Text 可以扩展超过Row 总长度的一半,即使有空闲space。尽管Text1和Text2的长度可能不同,如何实现我期望的结果?
mainAxisAlignment: MainAxisAlignment.spaceBetween,
为行添加 MainAxisAlignment.spaceBetween,它将在文本之间放置 space,使它们左右对齐。
您可以使用字符串的长度,使用 Flexible
中计算出的 flex
值来分割每个字符串的可用区域。对于非 monospaced 字体,结果并不总是最佳的,但是您必须以某种方式分配文本应该占用多少 space。你云使用 Expanded
来填充剩余的可用 space,但它只有在你有一个固定宽度的项目并在另一个项目上使用 Expanded
时才有效。
试试这个(在 Container
上设置宽度,红色仅用于演示):
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final text1 = 'Text111111111111111111';
final text2 = 'Text222';
return Container(
width: 200,
color: Colors.red,
child: Row(crossAxisAlignment: CrossAxisAlignment.end, children: [
Flexible(
flex: text1.length,
child: Text(text1,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left)),
Flexible(
flex: text2.length,
child: Text(text2,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left)),
]));
}
}
我想在一行中放置 2 个文本。我执行以下操作:
Row(crossAxisAlignment: CrossAxisAlignment.end, children: [
Flexible(
child: Text(text1,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left)),
Flexible(
child: Text(text2,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left)),
]),
这里我展示了预期的溢出结果和实际结果:
None 的Text 可以扩展超过Row 总长度的一半,即使有空闲space。尽管Text1和Text2的长度可能不同,如何实现我期望的结果?
mainAxisAlignment: MainAxisAlignment.spaceBetween,
为行添加 MainAxisAlignment.spaceBetween,它将在文本之间放置 space,使它们左右对齐。
您可以使用字符串的长度,使用 Flexible
中计算出的 flex
值来分割每个字符串的可用区域。对于非 monospaced 字体,结果并不总是最佳的,但是您必须以某种方式分配文本应该占用多少 space。你云使用 Expanded
来填充剩余的可用 space,但它只有在你有一个固定宽度的项目并在另一个项目上使用 Expanded
时才有效。
试试这个(在 Container
上设置宽度,红色仅用于演示):
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final text1 = 'Text111111111111111111';
final text2 = 'Text222';
return Container(
width: 200,
color: Colors.red,
child: Row(crossAxisAlignment: CrossAxisAlignment.end, children: [
Flexible(
flex: text1.length,
child: Text(text1,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left)),
Flexible(
flex: text2.length,
child: Text(text2,
maxLines: 1,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.left)),
]));
}
}