Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 将最小宽度固定到需要在颤振中扩展的小部件_Flutter_Text_Size - Fatal编程技术网

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