中心行子级和右对齐

Gil*_*and 7 centering flutter flutter-layout

在此处输入图片说明

我正在尝试实现以下布局。如果是列表,则这是顶部单元格。

现在我设法得到以下结果,使用以下代码

在此处输入图片说明

          Row(
        children: <Widget>[
          Expanded(
            child:
          Center(
            heightFactor: 3.5,
            child:
            Text("PLAY QUEUE",
            ),
          ),
          ),
          Padding(
            padding: EdgeInsets.fromLTRB(0,0,15.0,0),
            child:
            Align(
              child:
              Text("CLEAR"),
              alignment: Alignment.centerRight,
            ),
          ),

        ],
      ),
Run Code Online (Sandbox Code Playgroud)

您可能已经注意到,“PLAY QUEUE”偏离中心,这是正常的,因为它以剩余空间为中心,而“CLEAR”则占据该空间。

因此,将它居中只是从该布局中删除 CLEAR 标签的问题,但是如果我这样做了,我该如何显示它?

查看文档,我应该非常接近解决方案。但它们并没有将标题行居中(第 1 步,查看标题部分上的红色方块),因此显然不完全相同。

我不确定我现在应该针对什么布局。是否可以重叠小部件?所以我可以简单地居中并完全展开播放队列,然后用清除按钮在右侧重叠。

注意:我不想在播放队列标签上写任意的左填充。

编辑:感谢我从答案中得到的帮助,我现在使用以下代码获得了正确的结果:

      Stack(
        fit: StackFit.passthrough,
        children: <Widget>[
          Center(
            heightFactor: 3.5,
            child:
            Text(title,
              style: Theme.of(context).textTheme.title.copyWith(color: textColor),
            ),
          ),
          Positioned.directional(
            textDirection: TextDirection.rtl,
            start: 30,
            top: 22,
            child:
              Text("CLEAR"),
            ),
        ],
      ),
Run Code Online (Sandbox Code Playgroud)

困扰我的是我无法垂直对齐,我手动编写了任意偏移量,我认为这不是正确的方法。

出于某种原因,我不能只放一个 Center() 或类似的东西。这是应该如何做还是可以改进?

编辑 2:

我现在alignment: FractionalOffset.center,Stack()课堂上使用,它垂直对齐,就像我想要的那样。

所以现在一切都很好,我很高兴!谢谢大家 :)

Red*_*don 9

这是Stack的工作!

您可以将 Text 小部件作为单独的子项放入 Stack 中,并使用Positioned小部件将“清除”小部件右对齐。

这就是 Material AppBar 小部件为这个确切场景所做的

  • 没关系,我找到了一种方法:) AlignmentGeometry 对我来说不是很清楚,但是在 `Stack()` 上使用 `alignment: FractionalOffset.center,` 完成了我想要的工作! (2认同)

Arm*_*dhu 6

你可以用 Stack

       Card(child: Padding(
              padding: const EdgeInsets.all(16.0),
              child: Stack(
                children: <Widget>[
                  Center(child: Text('PLAY QUEUE'),),
                  Container(
                    alignment: Alignment.centerRight,
                    child: Text('CLEAR'),
                  )
                ],
              ),
            ),
          ),
Run Code Online (Sandbox Code Playgroud)