Flutter 弧度阴影:使用 CustomClipper 和 Container 实现
{
"title": "Flutter class TopArcClipper extends CustomClipper\nclass TopArcClipper extends CustomClipper<Path> {\n @override\n Path getClip(Size size) {\n final path = Path();\n final roundnessFactor = 50.px;\n path.lineTo(0, roundnessFactor);\n path.quadraticBezierTo(\n size.width / 2,\n 0,\n size.width,\n roundnessFactor,\n );\n path.lineTo(size.width, size.height);\n path.lineTo(0, size.height);\n path.close();\n return path;\n }\n\n @override\n bool shouldReclip(TopArcClipper oldClipper) => false;\n}\n\nclass TopArcClipperWithShadow extends StatelessWidget {\n final Widget child;\n\n const TopArcClipperWithShadow({Key key, this.child}) : super(key: key);\n\n @override\n Widget build(BuildContext context) {\n return Container(\n decoration: BoxDecoration(\n boxShadow: [\n BoxShadow(\n color: Colors.grey.withOpacity(0.5),\n blurRadius: 5,\n spreadRadius: 2,\n ),\n ],\n ),\n child: ClipPath(\n clipper: TopArcClipper(),\n child: child,\n ),\n );\n }\n}\n\n\n然后,您可以在使用TopArcClipperWithShadow时将需要添加阴影的内容放在child属性中,如下所示:\n\n\nTopArcClipperWithShadow(\n child: YourContentWidget(),\n)\n\n\n这样就可以将阴影效果应用到弧度上了。
原文地址: https://www.cveoy.top/t/topic/f2q7 著作权归作者所有。请勿转载和采集!