news 2026/4/3 4:22:32

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/3/30 10:58:09

uniapp+springboot音乐白噪音专注记录小程序

目录 项目概述核心功能技术亮点应用场景 项目技术支持论文大纲核心代码部分展示可定制开发之亮点部门介绍结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 项目概述 Uniapp与SpringBoot结合开发的音乐白噪音专注记录小程序,…

作者头像 李华
网站建设 2026/4/3 3:39:19

Starward启动器:5大核心问题解决方案全解析

Starward启动器:5大核心问题解决方案全解析 【免费下载链接】Starward Game Launcher for miHoYo - 米家游戏启动器 项目地址: https://gitcode.com/gh_mirrors/st/Starward Starward作为米哈游游戏的专业启动工具,为玩家提供更流畅的游戏体验。这…

作者头像 李华
网站建设 2026/3/30 23:04:01

d2dx项目:为暗黑破坏神2带来现代化宽屏体验的终极方案

当经典遭遇现代:分辨率困境的完美突破 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 暗黑破坏神2作为一代经典A…

作者头像 李华
网站建设 2026/4/3 4:14:52

Testlib竞赛编程测试框架终极指南:从零到精通

Testlib竞赛编程测试框架终极指南:从零到精通 【免费下载链接】testlib C library to develop competitive programming problems 项目地址: https://gitcode.com/gh_mirrors/te/testlib 想要在竞赛编程中快速构建可靠的测试环境?Testlib测试框架…

作者头像 李华
网站建设 2026/4/1 7:31:43

ChineseSubFinder:构建智能影音字幕管理系统的技术实践

在当今数字影音内容爆炸式增长的时代,字幕管理已成为影音爱好者面临的重要挑战。传统的手动字幕搜索、下载、匹配过程不仅耗时耗力,还经常因格式不兼容、时间轴错位等问题影响观影体验。ChineseSubFinder作为一款开源自动化字幕下载工具,通过…

作者头像 李华
网站建设 2026/3/12 16:17:20

Visual C++运行库修复工具完整教程:快速解决应用程序启动问题

Visual C运行库修复工具完整教程:快速解决应用程序启动问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:…

作者头像 李华