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()课堂上使用,它垂直对齐,就像我想要的那样。
所以现在一切都很好,我很高兴!谢谢大家 :)
这是Stack的工作!
您可以将 Text 小部件作为单独的子项放入 Stack 中,并使用Positioned小部件将“清除”小部件右对齐。
这就是 Material AppBar 小部件为这个确切场景所做的。
你可以用 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)
| 归档时间: |
|
| 查看次数: |
4913 次 |
| 最近记录: |