我可以在CustomPaint中使用Canvas在Flutter中绘制自定义框阴影吗?

时间:2019-03-06 23:19:12

标签: flutter

很明显如何绘制带有height属性的阴影,但是例如如果我想使阴影居中怎么办?

2 个答案:

答案 0 :(得分:1)

要在CustomPaint上绘制阴影,可以使用painter

CustomPaint(
  painter: BoxShadowPainter(),
  child: ClipPath(
  clipper: MyClipper(), //my CustomClipper
  child: Container(), // my widgets inside
)));

检查我的answer here

答案 1 :(得分:0)

找到了解决方案:

我可以简单地进入BoxShadow小部件的源代码,并将它们使用的路径属性应用于我自己的路径。

Here's the source code.

这是我用来为自定义路径(而不是具有边界半径的圆形或矩形)创建阴影的代码,可让我创建自定义阴影而不是使用高程预设。

canvas.drawPath(
    Path()
      ..addRect(
          Rect.fromPoints(Offset(-15, -15), Offset(size.width+15, size.height+15)))
      ..addOval(
          Rect.fromPoints(Offset(0, 0), Offset(size.width, size.height)))
      ..fillType = PathFillType.evenOdd,
    Paint() 
    ..color= Colors.black.withAlpha(shadowAlpha)
    ..maskFilter = MaskFilter.blur(BlurStyle.normal, convertRadiusToSigma(3))
    );

static double convertRadiusToSigma(double radius) {
return radius * 0.57735 + 0.5;

}