在compose中的Canvas用kotlin显示多数据波形闪烁的问题

在compose中的Canvas显示多数据波形闪烁的问题:当在Canvas多组记录波形数组时,从第一组开始记录多次显示,如图,当再次回到第一次记录位置再显示时,波形出现闪烁。

原码如下:

复制代码
data class DcWaveForm(
    var bDat: Boolean,
    var isOpenEar:Boolean,
    var count:Int,
    val dat: IntArray = IntArray(20) ,  //220
    var lPoints: Array<Offset> = List(140){Offset(0f,0f)}.toTypedArray(),
    var rPoints: Array<Offset> = List(140){Offset(0f,0f)}.toTypedArray()
) 
复制代码
class MyViewModel : ViewModel() {
    
    var mWaveForm: Array<DcWaveForm> by mutableStateOf(Array(11) {
        DcWaveForm(
            bDat = false,
            isOpenEar = false,
            count = 0,
            dat = IntArray(20) { 0 },
            lPoints = List(140){Offset(0f,0f)}.toTypedArray(),
            rPoints = List(140){Offset(0f,0f)}.toTypedArray()
        )
    })
        var mStartCount by mutableStateOf(0)
           private set
    // 安全访问方法
    fun getWaveFormData(index: Int): DcWaveForm? {
        return mWaveForm.getOrNull(index)
    }

    // 批量更新方法
    fun updateWaveArray(index: Int, block: DcWaveForm.() -> Unit) {
        mWaveForm = mWaveForm.apply {
            getOrNull(index)?.let { data ->
                this[index] = data.apply(block)
            }
        }
    }
    fun updateStartCount(count:Int){
        mStartCount = count
    }
   
}

val viewModel = MyViewModel()

复制代码
pointsLeft和pointsRight前面已经定义过,以为一直用就可以了,其它不然。直接用会出现闪烁,要重新定义则正常,如下:
相关推荐
小道士写程序7 分钟前
Qt 5.12 上读取 .xlsx 文件(Windows 平台)
开发语言·windows·qt
Shujie_L10 分钟前
【Android基础回顾】四:ServiceManager
android
ou.cs19 分钟前
c# :this() 和 :base()区别
开发语言·c#
Think Spatial 空间思维35 分钟前
【实施指南】Android客户端HTTPS双向认证实施指南
android·网络协议·https·ssl
Mikhail_G37 分钟前
Python应用函数调用(二)
大数据·运维·开发语言·python·数据分析
louisgeek1 小时前
Git 使用 SSH 连接
android
二流小码农1 小时前
鸿蒙开发:实现一个标题栏吸顶
android·ios·harmonyos
木木黄木木2 小时前
Python制作史莱姆桌面宠物!可爱的
开发语言·python·宠物
exploration-earth2 小时前
本地优先的状态管理与工具选型策略
开发语言·前端·javascript
八月林城2 小时前
echarts在uniapp中使用安卓真机运行时无法显示的问题
android·uni-app·echarts