我一直在google和s.o上寻找答案,但找不到我喜欢的答案。
我正在使用Stack小部件作为页面布局。在该堆栈内部,我将所有子窗口小部件都与Align窗口小部件一起放置。我试图在Align子项下创建一个ListView小部件,但是其卡片(子项)忽略了将我设置为List的对齐值的ListView对齐方式。
Align(
alignment: Alignment(0, -0.28),
child: Divider(
color: Color.fromARGB(50, 255, 255, 255),
),
),
Align(
alignment: Alignment(0, -0.20),
child: ListView(
children: <Widget>[
Card(
child: ListTile(
leading: Icon(some_icon),
title: Text("blabla"),
)),
],
),
),
我希望ListView项目在我的Divider下开始,因为垂直倾斜度设置的值为-0.20,低于Divider对齐(-0.28)。但是,这是它的外观:
如果我删除ListView并将Card小部件设置为Align直接子级,则定位很好。现在,正如我在文档中所读到的,Align小部件的对齐方式值受only child的尊重,所以如何为ListView子级(行/ ListTiles / Card等)实现相同的效果?
这只是一个示例!根据需要进行修改。 (编辑)
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(children: [
//Your behind widgets here...
Stack(children: [
Card(
color: Colors.white,
child:
ListTile(title: Text('1st card', textAlign: TextAlign.center))),
Align(
alignment:Alignment(0, -0.20),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(
height: 2,
width: double.infinity,
color: Colors.black,
margin: EdgeInsets.only(right: 25, left: 25),
),
SizedBox(
height: 10,
width: double.infinity,
),
Card(
color: Colors.white,
child: ListView(shrinkWrap: true, children: [
ListTile(
title: Text('List card', textAlign: TextAlign.center))
])),
],
),
)
])
]));
}
请尝试这个...
body: Container(
child: Center(
child: Padding(
padding: EdgeInsets.all(10),
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Divider(
thickness: 20, // this is for example
height: 22, // this is for example
color: Colors.red, // this is for example
),
Card (
child: ListTile(
leading: Icon(Icons.print),
title: Text("blabla"),
)),
],
),
),
),
),