我有一个小部件树如下:
Widget example() {
return Column(
children: [
Row(
children: [
Expanded(
child: Container(
height: 100,
decoration: BoxDecoration(color: Colors.red),
),
),
Text('25.00%')
],
),
Row(
children: [
Expanded(
child: Container(
height: 100,
decoration: BoxDecoration(color: Colors.red),
),
),
Text('125.00%')
],
),
Row(
children: [
Expanded(
child: Container(
height: 100,
decoration: BoxDecoration(color: Colors.red),
),
),
Text('1250.00%')
],
),
],
);
}
如何使所有文本占用相同的水平空间,而不使用像素宽度,以便所有容器垂直对齐?
我想为我的百分比设置一个固定的长度,较短的百分比用空格填充,较长的百分比用文本省略号裁剪。
有没有一个干净的内置方法可以做到这一点?
2条答案
按热度按时间vsdwdz231#
所有这些问题的解决方案都在auto_size_text包中,你可以设置一个
maxLines
来设置AutoSizeText
的最大行数,这样如果你有多个AutoSizeText
小部件,所有的都会占用相同的水平空间,因为然而,你的文本很长,包会调整它的大小以适应特定的行范围,否则,你可以给予它省略号样式。lc8prwob2#
因为你的要求是为百分比设置一个固定的宽度,并且在文本溢出时省略掉文本,所以我建议你也把
Text
小部件 Package 在一个Expanded
小部件中,并且为行的两个扩展部分使用flex
属性。我建议行的两个部分之间的比率为5:1,分别用flex1
和flex2
表示。但是,你可以根据你的要求设置flex。其次,我在所有Text
小部件中使用了overflow: TextOverflow.ellipsis
,这将照顾到你要求的省略部分。我还将文本右对齐,但这完全取决于你。以下是修订后的守则:
}
希望能有所帮助!