在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前面已经定义过,以为一直用就可以了,其它不然。直接用会出现闪烁,要重新定义则正常,如下:
相关推荐
Crazy________几秒前
4.10dockerfile构建镜像
java·开发语言
fish_xk3 分钟前
c++内存管理
开发语言·c++·算法
独特的螺狮粉13 分钟前
城市空气质量简易指数查询卡片:鸿蒙Flutter框架 实现的空气质量查询应用
开发语言·flutter·华为·架构·harmonyos
网域小星球13 分钟前
C语言从0入门(八)|函数基础:封装、调用与参数传递精讲
c语言·开发语言
东宇科技18 分钟前
如何使用js进行抠图。识别商品主体
开发语言·javascript·ecmascript
Dxy123931021621 分钟前
Python使用PyEnchant详解:打造高效拼写检查工具
开发语言·python
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.24 分钟前
基于MySQL一主一从环境添加多个新从库
android·mysql·adb
网域小星球25 分钟前
C 语言从 0 入门(十五)|综合小项目:菜单交互与简易功能实现
c语言·开发语言·交互
网域小星球34 分钟前
C 语言从 0 入门(十六)|动态内存管理:malloc /free/calloc /realloc 精讲
c语言·开发语言·free·malloc·动态内存
雪的季节42 分钟前
qt信号槽跨线程使用时候的坑
java·开发语言·qt