荆州网站推广怎么做,青岛网站建设报价,建设工程自学网站,萤栈WordPress文章目录 一、场景描述二、代码示例 一、场景描述
在Compose中设计思想是分为状态和组件的#xff0c;组件由状态控制。这个操作和传统的AndroidView不太一样。在Compose中对话框Dialog也是一个组件#xff0c;其显示和隐藏由外部状态控制。这里有一个场景#xff0c;假设显… 文章目录 一、场景描述二、代码示例 一、场景描述
在Compose中设计思想是分为状态和组件的组件由状态控制。这个操作和传统的AndroidView不太一样。在Compose中对话框Dialog也是一个组件其显示和隐藏由外部状态控制。这里有一个场景假设显示和关闭的时间间隔过短的话需要将时间延长至两秒后再隐藏。针对这种问题有两种写法一种是外部控制显示隐藏时机一种是内部控制。外部控制较为简单这里不再记录。本文记录下内部控制方式。
二、代码示例
class HomePage{private val countFlow MutableSharedFlowString()Composablefun FlowWidget(text: String){val (state,change) remember {mutableStateOf(323123)}LaunchedEffect(text){countFlow.emit(text)}LaunchedEffect(Unit) {countFlow.buffer().collect{delay(2000)change(it)Log.e(YM---,接受值--${it}---time:${System.currentTimeMillis()})}}Text(text state)}
}测试代码如下:
RequiresApi(Build.VERSION_CODES.O)override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val flowContent mutableStateOf(1)lifecycleScope.launch(Dispatchers.IO) {delay(1000)flowContent.value 2delay(1000)flowContent.value 3}setContent {ComposeTestTheme {// A surface container using the background color from the themeSurface(modifier Modifier.fillMaxSize(),color MaterialTheme.colors.background) {Box(modifier Modifier.size(100.dp, 100.dp)) {FlowWidget(flowContent.value)}}}}}