Mag*_*s W 9 flutter flutter-layout
我在页面顶部Container有一个BoxShadow装饰,下面Container是一个ListView带有数字的装饰Cards。我希望顶部Container有一个阴影出现在 中的项目前面ListView,但这就是我得到的:
阴影似乎出现在Cards它的后面而不是它的前面。这是代码:
Widget _buildBody(BuildContext context, ChecklistModel model){
return Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
decoration: BoxDecoration(
color: Colors.red.shade200,
boxShadow: [BoxShadow(
color: Colors.red.shade200,
offset: Offset(0, 10),
blurRadius: 10,
spreadRadius: 10
)]
),
child: ListTile(
title: Text(''),
)
),
Expanded(child: Padding(
padding: const EdgeInsets.all(10),
child: _buildCheckpointListView(context, model))
)
],
)
);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试用Containera替换Card,但这也不起作用。
发生这种情况是因为由于您Expanded在内部使用了一个小部件Column,它占用了屏幕上的所有可用空间,因此看起来它与Container但实际上它只是与阴影重叠。
Column使用 a代替小部件Stack来显示Container上面的ListView. 您可以使用Positionedwidget 来定位 Stack 的子 widget。
但在这种情况下,请确保将Container代码放在ListView,以便它始终位于顶部。
例子:
Stack(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10),
child: _buildCheckpointListView(context, model)
),
Positioned(
top: 0.0, //To align Container at the top of screen
left: 0.0,
right: 0.0,
child: Container(
decoration: BoxDecoration(
color: Colors.red.shade200,
boxShadow: [
BoxShadow(
color: Colors.red.shade200,
offset: Offset(0, 10),
blurRadius: 10,
spreadRadius: 10
)]
),
child: ListTile(
title: Text(''),
)
),
),
]
)
Run Code Online (Sandbox Code Playgroud)
如果您想从顶部提供一定的边距,您也可以将您包裹ListView在一个小部件内。Positioned
| 归档时间: |
|
| 查看次数: |
1539 次 |
| 最近记录: |