createWaveProvider static method
Implementation
static PathProvider createWaveProvider(
double waveWidth,
double maxWaveHeight,
) {
return (Size size, double progress) {
double waveTotalWidth = size.width * 3;
double top = size.height * (1 - progress);
Path path = Path()
..moveTo(size.width, top)
..lineTo(size.width, size.height)
..lineTo(0, size.height)
..lineTo(-2 * size.width, top);
//draw bezier
double waveHeight = (1 - progress) * maxWaveHeight;
//move wave
double leftOffset = 2 * size.width * progress;
path.lineTo(-2 * size.width + leftOffset, top);
double drawWaveWidth = leftOffset;
while (drawWaveWidth < waveTotalWidth) {
path.relativeQuadraticBezierTo(
waveWidth / 2,
waveHeight,
waveWidth,
0,
);
path.relativeQuadraticBezierTo(
waveWidth / 2,
-waveHeight,
waveWidth,
0,
);
drawWaveWidth += (waveWidth * 2);
}
return path;
};
}