You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jetpack Compose横向图片轮播中用mutableStateOf实现3秒Toast提示

实现Jetpack Compose轮播中的计时器Toast提示

以下是结合mutableStateOf<Boolean>完成需求的完整代码,附带新手友好的代码说明:

@Composable
fun Sample() {
    val context = LocalContext.current
    // 用mutableStateOf维护计时器的运行状态,Compose会自动监听状态变化
    val isTimerRunning = remember { mutableStateOf(false) }
    val pagerState = rememberPagerState()

    Column(
        Modifier.fillMaxWidth()
    ) {
        HorizontalPager(
            count = 7,
            state = pagerState,
            modifier = Modifier.fillMaxWidth(),
        ) {
            Full1()
        }

        HorizontalPagerIndicator(
            pagerState = pagerState,
            modifier = Modifier.align(Alignment.CenterHorizontally),
            activeColor = Utilities.activeColor,
            inactiveColor = Utilities.inactiveColor
        )
    }

    // 监听计时器状态,触发Toast和延迟逻辑
    LaunchedEffect(isTimerRunning.value) {
        if (isTimerRunning.value) {
            // 显示启动提示
            Toast.makeText(context, "timer started", Toast.LENGTH_SHORT).show()
            // 等待3秒
            delay(3000L)
            // 显示结束提示
            Toast.makeText(context, "time stopped", Toast.LENGTH_SHORT).show()
            // 重置计时器状态
            isTimerRunning.value = false
        }
    }

    // 可选:每次轮播页面切换时自动启动计时器
    LaunchedEffect(pagerState.currentPage) {
        isTimerRunning.value = true
    }

    // 可选:组件初始化时直接触发计时器
    // LaunchedEffect(Unit) {
    //     isTimerRunning.value = true
    // }
}

核心逻辑说明:

  • LocalContext:获取Android上下文,用于调用Toast提示。
  • mutableStateOf<Boolean>:isTimerRunning作为状态开关,控制计时器的启动/结束,Compose会在状态变化时自动触发关联逻辑。
  • LaunchedEffect:Compose中专门用于启动协程的组件,通过键值参数控制逻辑的执行时机:
    • 第一个LaunchedEffect监听isTimerRunning.value,状态为true时执行Toast提示+延迟逻辑,结束后重置状态。
    • 第二个LaunchedEffect监听轮播页面变化,每次切换页面自动启动计时器。
    • 若需要组件一加载就触发计时器,取消第三个LaunchedEffect的注释即可。

新手注意事项:

  • 必须用remember包裹mutableStateOf,保证状态在Compose重组时不会丢失。
  • delay(3000L)是协程延迟函数,单位为毫秒,对应需求中的3秒时长。
  • Toast的LENGTH_SHORT为系统默认短时长显示,符合需求场景。

内容的提问来源于stack exchange,提问作者Keshav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:10:14