gpt4 book ai didi

flutter - Boxshadow 出现在其他小部件后面

转载 作者:IT王子 更新时间:2023-10-29 07:03:58 25 4
gpt4 key购买 nike

我有一个 Container,页面顶部有一个 BoxShadow 装饰,Container 下面是一个 ListView 里面有一些 Cards。我希望顶部 ContainerListView 中的项目前面有一个投影,但这是我得到的:

enter image description here

投影似乎出现在 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))
)
],
)
);
}

我还尝试用 Card 替换 Container,但这也没有用。

最佳答案

发生这种情况是因为您在 Column 中使用了 Expanded 小部件,它占用了屏幕上的所有可用空间,因此它看起来像是重叠的Container 但实际上它只是与阴影重叠。

代替 Column 小部件,使用 StackListView 上方显示 Container。您可以使用 Positioned 小部件来定位 Stack 的子小部件。

但在这种情况下,请确保将 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(''),
)
),
),
]
)

如果您想从顶部提供一定的边距,您还可以将 ListView 包裹在 Positioned 小部件中。

关于flutter - Boxshadow 出现在其他小部件后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55296771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com