当前位置:   article > 正文

snapshotFlow的使用总结

snapshotflow

总结:

  1. snapshotFlow是一个普通的kotlin函数,没有被@Composable修饰;
  2. snapshotFlow函数返回值是一个flow(冷流):
fun <T> snapshotFlow(
    block: () -> T
): Flow<T> = flow {
	//略
}
  • 1
  • 2
  • 3
  • 4
  • 5
  1. snapshotFlow用于将不止一个state转化为flow:
        snapshotFlow {
            myState1 + myState2
        }.map {
            it
        }.collect {
            Log.e(">>>", "$it")
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. state未改变时,终端符(此处为collect)不会执行,等同于distinctionUntilChange操作符;
  2. 短时多次改变state时,终端符(此处为collect)只为接收到最后一次数据:
    var myState by remember {
        mutableStateOf(0)
    }
    LaunchedEffect(key1 = Unit, block = {
        snapshotFlow {
            myState
        }.map {
            it
        }.collect {
            Log.d(">>>", "$it")//只会打印最后一次发射的数据
        }
    })

    LaunchedEffect(key1 = Unit, block = {
        repeat(10) {
            myState++
        }
    })
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号