Flutter 将最小宽度固定到需要在颤振中扩展的小部件
我需要为我的列小部件确定一个最小宽度。在它们中,我有文本小部件,可以很短也可以很长。我需要为它们确定一个最小宽度,以便有一个可接受的列大小,即使文本很短。另一个专栏显然需要自我调整Flutter 将最小宽度固定到需要在颤振中扩展的小部件,flutter,text,size,Flutter,Text,Size,我需要为我的列小部件确定一个最小宽度。在它们中,我有文本小部件,可以很短也可以很长。我需要为它们确定一个最小宽度,以便有一个可接受的列大小,即使文本很短。另一个专栏显然需要自我调整 Row(children: [ Column( children: [ Container( constraints: BoxConstraints(minWidth: 80), // do not work child: Text("short te
Row(children: [
Column(
children: [
Container(
constraints: BoxConstraints(minWidth: 80), // do not work
child: Text("short text"),
),
],
),
Column(
children: [
Container(
constraints: BoxConstraints(minWidth: 110), // do not work
child: RichText(
text: TextSpan(
text:"very very longggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg text")),
),
],
),
],
)
使用FittedBox()
假设示例:
Row(
children: [
Column(
children: [
Container(
constraints: BoxConstraints(minWidth: 80), // do not work
child: Text("short text"),
),
],
),
Column(
children: [
Container(
constraints: BoxConstraints(minWidth: 110), // do not work
child:
FittedBox(
child: RichText(
text: TextSpan(
text:
"very very longggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg text")),
),
),
],
),
],
);
你想做什么,可能有十几种方法。而且可能没有一个是直截了当或容易理解的。(约束和大小的主题相当复杂。请参阅。) 这里有一个潜在的解决方案 这将为蓝色列设置一个最小宽度(基于
stepWidth
),但如果其中的文本(子级)需要,它将扩展/增长
黄色列将调整大小以适应蓝色列
class ExpandedRowPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Expanded Row Page'),
),
body: SafeArea(
child: Center(
child: Row(
children: [
IntrinsicWidth(
stepWidth: 100,
// BLUE Column
child: Container(
color: Colors.lightBlueAccent,
child: Column(
children: [
//Text('Short'),
Text('shrt')
],
)
),
),
// YELLOW Column
Flexible(
child: Container(
alignment: Alignment.center,
color: Colors.yellow,
child: Column(
children: [
Text('Very lonnnnnnnnnnnnnnnnnnnnnnnnnnnng texttttttttttttt'),
],
)
),
)
],
)
),
),
);
}
}
您可以在没有Flexible
yellow列的情况下执行上述操作,但是如果没有Flexible或扩展的包装小部件,很长的文本子项将导致溢出警告
行小部件本身具有无限宽度约束。所以,如果一个孩子想要大于屏幕宽度,它可以,并且会导致溢出。(尝试删除上面的Flexible
,然后重新构建以查看。)
Flexible和Expanded,仅在Row&Column(或Flex,它们的超类)内部使用,检查行内的屏幕宽度和其他小部件,并为其子项提供定义的约束大小,而不是无限大。子对象(在“灵活/扩展”中)现在可以向父对象查找约束,并相应地调整自己的大小
例如,对于Flexible/Expanded给出的约束,文本小部件太宽时,它会将文本包装起来。我应该如何使用它?我试过用FittedBox包装我的文本和RichText,但似乎不起作用,你能给我一个更详细的例子吗?检查我是否用你的代码编辑了它,并查看FittedBox工作谢谢!但是我不想我的文本被调整大小,还有其他方法吗?Transform.scale(scale:width)如果你不想文本被调整大小,你可以使用Transform scale