我想为自定义的Container
添加涟漪效果。我已经使用Inkwell
和Material
小部件来实现这个功能,但是它没有起作用。代码如下:
@override
Widget build(BuildContext context) {
return Center(
child: Material(
color: Colors.transparent,
child: InkWell(
onTap: (){},
child: Container(
width: 150,
height: 100,
decoration: BoxDecoration(
border: Border.all(color: Colors.red, width: 2),
borderRadius: BorderRadius.circular(18),
color: Colors.deepPurpleAccent,
),
alignment: Alignment.center,
child: Text(
"A box container",
style: TextStyle(color: Colors.white),
),
),
),
),
);
}
结果如下:
结果为:
我还在Container
上使用了透明色,在Material
上使用了紫色,如下所示:
@override
Widget build(BuildContext context) {
return Center(
child: Material(
color: Colors.deepPurpleAccent,
child: InkWell(
onTap: () {},
child: Container(
width: 150,
height: 100,
decoration: BoxDecoration(
border: Border.all(color: Colors.red, width: 2),
borderRadius: BorderRadius.circular(18),
color: Colors.transparent,
),
alignment: Alignment.center,
child: Text(
"A box container",
style: TextStyle(color: Colors.white),
),
),
),
),
);
}
作为结果,会出现涟漪效应,但是
Container
看起来像这样(不是我想要的):
我还交换了Container
和Material
小部件,将剪辑应用于Container
,如下所示:@override
Widget build(BuildContext context) {
return Center(
child: Container(
width: 150,
height: 100,
decoration: BoxDecoration(
border: Border.all(color: Colors.red, width: 2),
borderRadius: BorderRadius.circular(18),
color: Colors.transparent,
),
clipBehavior: Clip.hardEdge,
child: Material(
color: Colors.deepPurpleAccent,
child: InkWell(
onTap: () {},
child: Center(
child: Text(
"A box container",
style: TextStyle(color: Colors.white),
),
),
),
),
),
);
}
再次出现了涟漪效果,但是Container
不像我想要的那样(您可以在以下照片和第一张照片的Container
边缘之间发现小差异):
我希望Container
看起来与第一张照片完全相同,具有涟漪效果。
注意:我想要的行为可以通过使用Ink
和Inkwell
小部件来实现,但是当在ListView
中使用时,会导致项目渲染问题。