当前位置: 首页 > news >正文

Compose | UI组件(八) | Dialog - 对话框

文章目录

  • 前言
    • Dialog 普通弹框
    • Dialog 普通弹框的使用
    • AlertDialog 警告弹框
    • AlertDialog 警告弹框的使用
  • 总结


前言

在我们传统的UI界面中,经常用到弹框,Compose也有弹框,但是Compose的弹框显示和隐藏和传统的弹框显示(show)和隐藏 (dismiss)不一样,Compose中显示与否要看是否重组被执行,所以它显示与否要依赖状态控制


Dialog 普通弹框

Dialog是最底层的弹框,可以在该组件之上封装

@Composable
fun Dialog(onDismissRequest: () -> Unit,   //关闭回调函数properties: DialogProperties = DialogProperties(), //对话框的属性,用于自定义对话框content: @Composable () -> Unit    //对话框内容
)

Dialog 普通弹框的使用

@Composable
fun DialogMethod(){val openDialog = remember { mutableStateOf(false) }BaseDialog(dialogState = openDialog)Button(modifier = Modifier.wrapContentSize(),onClick  = { openDialog.value = !openDialog.value}) {Text(text = "显示普通dialog")}
}@Composable
fun BaseDialog(dialogState:MutableState<Boolean>){if(dialogState.value){Dialog(onDismissRequest = { dialogState.value = false }) {Box(modifier = Modifier.size(200.dp, 50.dp).background(Color.Red))}}
}

AlertDialog 警告弹框

AlertDialog组件是Dialog组件更高级的封装组件,它定位好了标题,内容文本,按钮位置

@Composable
fun AlertDialog(onDismissRequest: () -> Unit,                           //关闭回调函数confirmButton: @Composable () -> Unit,                  //确认按钮modifier: Modifier = Modifier,                          //修饰符dismissButton: @Composable (() -> Unit)? = null,        //取消按钮icon: @Composable (() -> Unit)? = null,                 //图标title: @Composable (() -> Unit)? = null,                //标题text: @Composable (() -> Unit)? = null,                 //内容shape: Shape = AlertDialogDefaults.shape,               //样式containerColor: Color = AlertDialogDefaults.containerColor,       //内容颜色iconContentColor: Color = AlertDialogDefaults.iconContentColor,   //图标颜色titleContentColor: Color = AlertDialogDefaults.titleContentColor, //标题颜色textContentColor: Color = AlertDialogDefaults.textContentColor,   //字体颜色tonalElevation: Dp = AlertDialogDefaults.TonalElevation,          //设置阴影properties: DialogProperties = DialogProperties()                 //对话框的属性,用于自定义对话框
) 

AlertDialog 警告弹框的使用

@Composable
fun DialogMethod(){val openAlertDialog = remember { mutableStateOf(false) }AlertDialogSample(dialogState = openAlertDialog)Button(modifier = Modifier.wrapContentSize(),onClick  = { openAlertDialog.value = !openAlertDialog.value}) {Text(text = "显示Alertdialog")}
}@Composable
fun AlertDialogSample(dialogState:MutableState<Boolean>){if(dialogState.value){AlertDialog(onDismissRequest = { dialogState.value = false },title = {Text(text = "提示标题")},text = {Text(text = "提示内容")},confirmButton = {TextButton(onClick = { dialogState.value = false }) {Text(text = "确定")}},dismissButton = {TextButton(onClick = { dialogState.value = false }) {Text(text = "取消")}})}
}

总结

  1. Dialog是最底层的弹框,可以在该组件之上封装

  2. AlertDialog组件是Dialog组件更高级的封装组件,它定位好了标题,内容文本,按钮位置

相关文章:

Compose | UI组件(八) | Dialog - 对话框

文章目录 前言Dialog 普通弹框Dialog 普通弹框的使用AlertDialog 警告弹框AlertDialog 警告弹框的使用 总结 前言 在我们传统的UI界面中&#xff0c;经常用到弹框&#xff0c;Compose也有弹框&#xff0c;但是Compose的弹框显示和隐藏和传统的弹框显示&#xff08;show&#x…...

【Spark系列6】如何做SQL查询优化和执行计划分析

Apache Spark SQL 使用 Catalyst 优化器来生成逻辑执行计划和物理执行计划。逻辑执行计划描述了逻辑上如何执行查询&#xff0c;而物理执行计划则是 Spark 实际执行的步骤。 一、查询优化 示例 1&#xff1a;过滤提前 未优化的查询 val salesData spark.read.parquet(&quo…...

Observability:在 Elastic Stack 8.12 中使用 Elastic Agent 性能预设

作者&#xff1a;来自 Elastic Nima Rezainia, Bill Easton 8.12 中 Elastic Agent 性能有了重大改进 最新版本 8.12 标志着 Elastic Agent 和 Beats 调整方面的重大转变。 在此更新中&#xff0c;Elastic 引入了 Performance Presets&#xff0c;旨在简化用户的调整过程并增强…...

空间数据分析和空间统计工具库PySAL入门

空间数据分析是指利用地理信息系统(GIS)技术和空间统计学等方法&#xff0c;对空间数据进行处理、分析和可视化&#xff0c;以揭示数据之间的空间关系和趋势性&#xff0c;为决策者提供有效的空间决策支持。空间数据分析已经被广泛运用在城市规划、交通管理、环境保护、农业种植…...

LabVIEW电液伺服控制系统

介绍了如何利用ARM微处理器和LabVIEW软件开发一个高效、精准的电液伺服控制系统。通过结合这两种技术&#xff0c;我们能够提高系统的数字化程度、集成化水平&#xff0c;以及控制精度&#xff0c;从而应对传统电液伺服控制器面临的问题。 该电液伺服控制系统由多个关键部分组…...

Dubbo_入门

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 Dubbo_入门 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是分布式系统二、什么…...

Ubuntu22.04更换软件源

本文以Ubuntu22.04更换科大源为例演示更改软件源的方法&#xff0c;其他版本的Ubuntu系统或更换其他软件源&#xff0c;如清华源&#xff0c;阿里源等&#xff0c;方法类似。 前言 中国科学技术大学开源软件镜像由中国科学技术大学网络信息中心提供支持。 mirrors.ustc.edu.…...

解密Android某信聊天记录

前置条件 frida, frida-tools, adb 获取密码 h.js console.log(script loaded successfully);function xx() {function strf(str, replacements) {return str.replace(/\$\{\w\}/g, function(placeholderWithDelimiters) {var placeholderWithoutDelimiters placeholderWi…...

海外云手机对于亚马逊卖家的作用

近年来&#xff0c;海外云手机作为一种新型模式迅速崭露头角&#xff0c;成为专业的出海SaaS平台软件。海外云手机在云端运行和存储数据&#xff0c;通过网页端操作&#xff0c;将手机芯片放置在机房&#xff0c;通过网络连接到服务器&#xff0c;为用户提供便捷的上网功能。因…...

交换机的发展历史

交换机发展历史是什么&#xff0c;详细介绍每代交换机的性能特点&#xff0c;特色功能 交换机的发展历史可以大致分为以下几个阶段&#xff0c;每个阶段的设备性能特点和特色功能有所差异&#xff1a; 1. 第一代以太网交换机&#xff08;1980年代末至1990年代初&#xff09; …...

用katalon解决接口/自动化测试拦路虎--参数化

不管是做接口测试还是做自动化测试&#xff0c;参数化肯定是一个绕不过去的坎。 因为我们要考虑到多个接口都使用相同参数的问题。所以&#xff0c;本文将讲述一下katalon是如何进行参数化的。 全局变量 右侧菜单栏中打开profile&#xff0c;点击default&#xff0c;打开之后…...

CSRF靶场练习

简述&#xff1a;CSRF漏洞实际很少&#xff1b;条件限制很多&#xff1b;局限性很大&#xff1b;实验仅供参考&#xff0c;熟悉csrf概念和攻击原理即可 Pikachu靶场 CSRF GET 登录用户vince的账户可以看到用户的相关信息&#xff1b; 点击修改个人信息&#xff0c;发现数据包…...

pgsql的查询语句有没有走索引

使用EXPLAIN ANALYZE命令&#xff1a; EXPLAIN ANALYZE [ ( option [, ...] ) ]statement示例&#xff1a; EXPLAIN ANALYZE SELECT * FROM employees WHERE age > 30;在执行计划中&#xff0c;如果看到索引扫描&#xff08;Index Scan&#xff09;或位图堆扫描&#xff0…...

jenkins部署(docker)

docker部署&#xff0c;避免安装tomcat 1.拉镜像 docker pull jenkins/jenkins2.宿主机创建文件夹 mkdir -p /lzp/jenkins_home chmod 777 /lzp/jenkins_home/3.启动容器 docker run -d -p 49001:8080 -p 49000:50000 --privilegedtrue -v /lzp/jenkins_home:/var/jenkins_…...

Python实现时间序列分析AR定阶自回归模型(ar_select_order算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 时间序列分析中&#xff0c;AR定阶自回归模型&#xff08;AR order selection&#xff09;是指确定自回…...

Springboot自定义线程池实现多线程任务

1. 在启动类添加EnableAsync注解 2.自定义线程池 package com.bt.springboot.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTask…...

linux离线升级openssh方法

检查openssh版本&#xff1a; 升级前openssh 版本为7.4 openssl 版本为1.0.2k Openssh9.6 所需openssl >1.1.1 因此openssl也需要升级。 为了防止升级失败&#xff0c;无法使用SSH登录&#xff0c;首先安装telnet 预防。查看是否安装了telnet 客户端及服务 未安装tel…...

(五)MySQL的备份及恢复

1、MySQL日志管理 在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这样情况下&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了 数据库中数据丢失或被破坏可能原因&#xff1a; 误删除数据…...

VitePress-04-文档中的表情符号的使用

说明 vitepress 的文档中是支持使用表情符号的&#xff0c;像 &#x1f602; 等常用的表情都是支持的。 本文就来介绍它的使用方式。 使用语法 语法 &#xff1a; :表情名称: 例如 &#xff1a; :joy: &#x1f602; 使用案例代码 # 体会【表情】的基本使用 > hello world …...

Redis客户端之Redisson(二)Redisson组件

Redisson的几个常用客户端 一、RedissonClient 1、创建 通过Config对象配置RedissonClient所需要的参数&#xff0c;然后获取RedissonClient对象即可。 Config config new Config(); config.useSingleServer().setAddress("redis://127.0.0.1:6379"); RedissonC…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...