“文本”窗口小部件内的文本即使在“灵活”窗口小部件中包装时也没有自动换行。我找到了一种解决方法,但它涉及将Column小部件包装在Flexible小部件中,但我不确定这是最佳做法。
我在网上看到了许多类似的答案,但是没有一个确切的问题。与我有关的文本小部件嵌套在下面的层次结构行->列->行
中是相关的关于此布局的外观的大致想法: 这是原始代码。运行时,文本溢出屏幕而不是环绕。
Row(
children: [
Column(
mainAxisSize: MainAxisSize.min,
children: [
Text("top column"),
Row(
children: [
Text("left row"),
Text(
"this is the text that needs to wrap, this is the text that needs to wrap",
),
],
),
],
crossAxisAlignment: CrossAxisAlignment.start,
),
Text("right side"),
],
mainAxisAlignment: MainAxisAlignment.spaceBetween,
);
下面的代码可以解决我的问题,但是涉及将Text小部件和外部Column小部件都包装在Flexible小部件中:
Row(
children: [
Flexible( // added Flexible widget, but doesn't seem correct.
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text("top column"),
Row(
children: [
Text("left row"),
Flexible( // added Flexible widget
child: Text(
"this is the text that needs to wrap, this is the text that needs to wrap",
),
)
],
),
],
crossAxisAlignment: CrossAxisAlignment.start,
),
),
Text("right side"),
],
mainAxisAlignment: MainAxisAlignment.spaceBetween,
);
是否有更好的方法来实现这种包装,或者将Column封装在Flexible小部件中是令人满意的方法?
答案 0 :(得分:0)
您的方法是正确的,这就是原因:
您可以通过将内部Row
包裹到Flexible
中来解决内部Column
长文本的问题,以防止在水平轴上溢出。如果这是您的整棵树,则效果很好。并非如此。
在小部件树上,没有水平约束来限制子项的宽度。children
沿垂直轴环绕,因此最上方Row
的{{1}}固定宽度(Text("right side")
),另一个是无界的(Column
)。
用Column
包裹Flexible
时,它使children
被水平限制。另一种方法是使用Container
,但这不是最好的方法,因为它需要您在构建之前指定宽度。