news 2026/7/1 21:32:52

Compose 封装 - 倒计时消失容器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Compose 封装 - 倒计时消失容器

一、封装

  • 不要用封装 Dialog/AlertDialog 来实现弹窗。Dialog 作为基础组件就是个 Box 毫无意义,不必为了用它而多出很多不必要的代码 。AlertDialog 不基础但点击功能你往容器里传入的自定义界面也能实现。
  • 不要用收集 Flow 来实现倒数,collectAsState() 底层用了 remember 持久化,再次弹窗不会从头收集。
/** * 根布局用Box,该容器与屏幕内容平级,以实现类似对话框弹窗效果。 * @param maxCount 最大计数 * @param isShow 是否显示容器 * @param onDismiss 关闭容器显示 * @param content 容器界面内容 */ @Composable fun CountDownContainer( maxCount: Int, isShow: Boolean, onDismiss: () -> Unit, content: @Composable (Int) -> Unit ) { var count by remember { mutableIntStateOf(maxCount) } LaunchedEffect(isShow) { //it是从0开始正数,+1才能减到0(尽管多数1秒) repeat(maxCount + 1) { count = maxCount - it delay(1000) } } if (count == 0) onDismiss() //数到0就关闭容器 if (isShow) { content(count) } }

二、使用

@Composable private fun Demo( ) { var isShow by remember { mutableStateOf(false) } Button({ isShowDialog = true }) { Text("点击弹窗") } CountDownContainer( maxCount = 5, isShow = isShow, onDismiss = { isShow = false } ) { Box( modifier = Modifier.size(200.dp).background(Color.Red), contentAlignment = Alignment.Center ) { Text("$it") } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 10:55:47

ECDICT开源英汉词典数据库:构建专业词典应用的完整解决方案

ECDICT开源英汉词典数据库:构建专业词典应用的完整解决方案 【免费下载链接】ECDICT Free English to Chinese Dictionary Database 项目地址: https://gitcode.com/gh_mirrors/ec/ECDICT 在词典应用开发领域,高质量的数据源往往是决定项目成败的…

作者头像 李华
网站建设 2026/7/1 8:44:32

如何快速掌握UEViewer:虚幻引擎资源管理完整指南

UEViewer是专为虚幻引擎设计的强大资源管理工具,能够直接查看和导出虚幻引擎1-4版本的各种资源文件。无论你是游戏开发者、美术设计师还是技术爱好者,这款工具都能帮助你轻松处理虚幻引擎的各类资源。 【免费下载链接】UEViewer Viewer and exporter for…

作者头像 李华
网站建设 2026/7/1 7:51:49

Obsidian笔记模板:构建个人知识管理的完整生态

Obsidian笔记模板:构建个人知识管理的完整生态 【免费下载链接】Obsidian-Templates A repository containing templates and scripts for #Obsidian to support the #Zettelkasten method for note-taking. 项目地址: https://gitcode.com/gh_mirrors/ob/Obsidia…

作者头像 李华
网站建设 2026/7/1 14:30:24

R3nzSkin:英雄联盟国服个性化体验增强工具深度解析

R3nzSkin:英雄联盟国服个性化体验增强工具深度解析 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 在当今游戏体验日益个性化的时代&#x…

作者头像 李华
网站建设 2026/7/1 16:36:09

uniapp+springboot微信小程序画者话题论坛的设计与实现

目录摘要项目技术支持论文大纲核心代码部分展示可定制开发之亮点部门介绍结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作摘要 本设计基于Uniapp与SpringBoot框架实现了一个微信小程序端的画者话题论坛系统,旨在为绘画爱好者…

作者头像 李华
网站建设 2026/7/1 7:51:56

Qwen3-VL物流分拣优化:包裹标签识别与目的地自动路由

Qwen3-VL在物流分拣中的智能升级:从标签识别到自动路由 在现代快递分拣中心,传送带高速运转,包裹如流水般通过各个检测点。然而,一个看似简单的任务——“这个包裹该送往哪里?”背后却隐藏着巨大的技术挑战&#xff1a…

作者头像 李华