I've finally figured out the issue of why the CustomPainter for drawing the waves isn't drawing anything. That's because it is never actually initialised. So that's one problem solved, but it also helped to reveal that the reason that it isn't initialised is because oneCycleData is always null.
As shown in the above code, the WavePainter can't be added to the widget tree because oneCycleData is null. I have no idea why this happens but at least it is a starting point.