颤动UI:绝对定位元素,具有固定高度和100%宽度

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

在颤动中,我想要一个高度固定且宽度为100%的容器。

为此,我使用了:

              Row(
                children: <Widget>[
                  Flexible(
                    child: Container(
                      color: Colors.blue,
                      height: 40.0,
                    ),
                  ),
                ],
              ),

现在,我想将此行偏离屏幕几个像素。要做到这一点,我试图使用:

        Stack(
          children: <Widget>[
            Positioned(
              left: -5.0,
              child: Row(
                children: <Widget>[
                  Flexible(
                    child: Container(
                      color: Colors.blue,
                      height: 40.0,
                    ),
                  ),
                ],
              ),
            ),
          ],
        ),

这给了我错误:

在performLayout()期间抛出以下断言:RenderFlex子项具有非零flex,但传入宽度约束是无限制的。

我该如何创建这种布局效果?

dart flutter flutter-layout
1个回答
1
投票

尝试给出特定大小的儿童小部件。定位小部件不能具有灵活的子级大小。

所以我将屏幕宽度设置为Positioned(父窗口小部件)和高度40.你只需要给出Row中每个子节点的宽度。如果要为它们提供一些灵活的关系,请尝试在Row小部件中使用MainAxisAlignment属性。

这是我的例子。

Positioned(
              width: MediaQuery.of(context).size.width,
              height: 40.0,
              left: -5.0,
              child: Container(
                color: Colors.grey,
                child: Row(
                  children: <Widget>[
                    Container(
                      color: Colors.green,
                      width: MediaQuery.of(context).size.width / 3,
                      child: Center(
                          child: Text("Green")
                      ),
                    ),
                    Container(
                      color: Colors.pink,
                      width: MediaQuery.of(context).size.width / 3,
                      child: Center(child: Text("Pink"))
                    ),
                    Container(
                      color: Colors.blue,
                      width: MediaQuery.of(context).size.width / 3,
                      child: Center(child: Text("Blue")),
                    )
                  ],
                ),
              ),
            ),
© www.soinside.com 2019 - 2024. All rights reserved.