尝试理解ConstrainedBox

问题描述 投票:0回答:1

这里是 Flutter 新手。

请参考 Flutter 文档中的示例 示例

我只在该代码中添加了 4 行。您会发现那些带有注释“由我添加的行”的行。 但是输出没有变化

  Widget build(BuildContext context) {
    return DefaultTextStyle(
      style: Theme.of(context).textTheme.bodyText2,
      child: LayoutBuilder(
        builder: (BuildContext context, BoxConstraints viewportConstraints) {
          print(viewportConstraints.minWidth);     // Lines Added By me
          print(viewportConstraints.maxWidth);     // Lines Added By me
          return SingleChildScrollView(
            child: ConstrainedBox(
              constraints: BoxConstraints(
                minHeight: viewportConstraints.maxHeight,
                maxWidth : viewportConstraints.minWidth/2,  // Lines Added By me
                minWidth : viewportConstraints.minWidth/2,  // Lines Added By me
              ),
              child: Column(
                mainAxisSize: MainAxisSize.min,
                mainAxisAlignment: MainAxisAlignment.spaceAround,
                children: <Widget>[
                  Container(
                    // A fixed-height child.
                    color: const Color(0xffeeee00), // Yellow
                    height: 120.0,
                    alignment: Alignment.center,
                    child: const Text('Fixed Height Content'),
                  ),
                  Container(
                    // Another fixed-height child.
                    color: const Color(0xff008000), // Green
                    height: 120.0,
                    alignment: Alignment.center,
                    child: const Text('Fixed Height Content'),
                  ),
                ],
              ),
            ),
          );
        },
      ),
    );
  }

所以我只是在玩这个例子。我想看看是否可以通过向 constrainedBox 提供 maxWidth 来控制容器的宽度。但它不起作用,我想知道其背后的原因/概念?

现在,在container布局行为部分中说:“如果小部件具有对齐方式,并且父级提供有界约束,则容器会尝试扩展以适合父级,然后根据对齐。”

有人可以解释一下我的理解哪里错了吗?

从上面的屏幕截图看来,正确的(宽度/2)约束没有传递到列。

flutter dart containers width
1个回答
0
投票

当您提到输出没有变化时,预期的行为是什么?如果屏幕发生变化(即屏幕重建),

LayoutBuilder.builder()
会返回更新的约束。至于使用
ConstrainedBox
调整
BoxConstraints
的大小,您在这里所做的是设置父 Widget 的最小和最大尺寸,而不是设置父 Widget 的尺寸。如果子级大于父级,则它将受到设置尺寸的约束。

© www.soinside.com 2019 - 2024. All rights reserved.