Проблема, с которой вы столкнулись, может быть связана с тем, что вы не определили дочерний элемент в CustomPaint
Я добавил пустой контейнер, запустил код и получил следующие результаты
Снимок экрана
Именование вашего StatelessWidget Paint
также не рекомендуется
class Paint extends StatelessWidget {
Следующий метод принимает два параметра, один типа Paint, потому что вы определили пользовательский виджет с тем же именем, что и был передача неправильного параметра в моем случае
canvas.drawPath(path, paint);
Код, который я использовал для получения результатов, прикрепленных в этом ответе: Paint Widget:
class PaintWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container(
color: Colors.white,
child: CustomPaint(
painter: SignInPageCustomShape(),
child: Container(),
),
),
),
);
}
}
SignInPageCustomShape Widget:
class SignInPageCustomShape extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
final paint = Paint();
final Color myColor = Colors.black12;
paint.color = myColor;
paint.style = PaintingStyle.fill;
final path = Path();
path.moveTo(0, size.height * 0.9167);
path.quadraticBezierTo(
size.width * 0.25,
size.height * 0.875,
size.width * 0.5,
size.height * 0.9167,
);
path.quadraticBezierTo(
size.width * 0.75,
size.height * 0.9584,
size.width * 1.0,
size.height * 0.9167,
);
path.lineTo(size.width, size.height);
path.lineTo(0, size.height);
canvas.drawPath(path, paint);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) {
return true;
}
}