一尘不染

Boxshadow出现在其他小部件的后面

flutter

我有Container一个BoxShadow在页面的顶部装饰,下面ContainerListView与一些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))
                )
            ],
        )
    );
}

我也尝试将替换ContainerCard,但这也不起作用。


阅读 251

收藏
2020-08-13

共1个答案

一尘不染

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

代替Column小部件,使用Stack来显示Container上方的ListView。您可以使用Positioned小部件来放置堆栈的子小部件。

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

如果要从顶部提供一定的边距,也可以将其包装ListViewPositioned小部件内。

2020-08-13