我正在我的应用程序中为麦克风实现波形可视化。
class BarVisualizer extends CustomPainter {
final List<double> waveData;
BarVisualizer({
required this.waveData,
});
@override
void paint(Canvas canvas, Size size) {
for (var i = 0; i < waveData.length; i++) {
canvas.drawLine(Offset(i.toDouble() + i , 0),
Offset(i.toDouble() + i, -waveData[i]), wavePaint);
}
}
@override
bool shouldRepaint(CustomPainter oldDelegate) {
return true;
}
上面for-loop
为我从麦克风获得的每个分贝值画线。当我使用麦克风获取数据时,分贝列表会变大,并开始在屏幕外绘制。
所以我的问题是如何将之前绘制的线条移回屏幕内以绘制新的传入分贝值?