Flutter 中的 CupertinoAlertDialog 小部件:全面指南
Flutter 中的 CupertinoAlertDialog 小部件:全面指南
在Flutter中,CupertinoAlertDialog是用于在iOS风格的应用中显示警告或提示信息的模态对话框。它以其圆角卡片和模糊背景为特点,为用户提供了一个简洁而直观的交互界面。CupertinoAlertDialog通常用于需要用户注意的重要信息或者需要用户做出决策的场合。本文将提供关于如何在Flutter应用中使用CupertinoAlertDialog的全面指南。
1. 引入Cupertino Icons 和 Flutter Cupertino Icons 包
由于CupertinoAlertDialog是Cupertino风格的组件,确保你的Flutter项目中已经导入了Cupertino Icons包。
dependencies:flutter:sdk: fluttercupertino_icons: ^latest_version
2. 创建基本的CupertinoAlertDialog
以下是创建一个基本CupertinoAlertDialog的示例:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';class CupertinoAlertDialogExample extends StatelessWidget {Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('CupertinoAlertDialog Example'),),body: Center(child: CupertinoButton(child: Text('Show Alert Dialog'),onPressed: () {showCupertinoAlertDialog(context: context,title: Text('Alert Title'),content: Text('This is an alert dialog with a longer body.'),actions: <Widget>[CupertinoDialogAction(isDefaultAction: true,child: Text('Cancel'),onPressed: () {Navigator.pop(context);},),CupertinoDialogAction(isDestructiveAction: true,child: Text('Delete'),onPressed: () {// 处理删除操作Navigator.pop(context);},),],);},),),);}
}
3. CupertinoAlertDialog的属性
CupertinoAlertDialog组件提供了以下属性,以支持各种自定义需求:
title: 对话框标题,通常是一个TextWidget。content: 对话框内容,可以是任意Widget。actions: 按钮列表,用于提供操作选项,如“取消”和“删除”。
4. 使用CupertinoDialogAction
CupertinoDialogAction用于创建CupertinoAlertDialog中的按钮:
CupertinoDialogAction(child: Text('OK'),isDefaultAction: false,isDestructiveAction: false,onPressed: () {// 处理确认操作Navigator.pop(context);},
)
isDefaultAction和isDestructiveAction属性可以用于改变按钮的样式,使其符合iOS的设计标准。
5. 显示CupertinoAlertDialog
showCupertinoAlertDialog是一个全局函数,用于在给定的BuildContext上显示一个CupertinoAlertDialog:
showCupertinoAlertDialog(context: context,title: Text('Confirmation'),content: Text('Are you sure you want to proceed?'),actions: <Widget>[CupertinoDialogAction(child: Text('No'),onPressed: () {Navigator.pop(context); // 关闭对话框,不执行任何操作},),CupertinoDialogAction(child: Text('Yes'),isDefaultAction: true,onPressed: () {// 处理确认操作Navigator.pop(context, 'confirmed');},),],
);
6. 自定义CupertinoAlertDialog
你可以通过设置不同的属性来定制CupertinoAlertDialog的外观:
CupertinoAlertDialog(title: Text('Custom CupertinoAlertDialog'),content: Text('This is a custom alert dialog with custom padding.'),actions: <Widget>[CupertinoDialogAction(child: Text('DISAGREE'),onPressed: () {// 处理不同意操作},),CupertinoDialogAction(child: Text('AGREE'),isDefaultAction: true,onPressed: () {// 处理同意操作},),],// 自定义背景颜色和圆角backgroundColor: CupertinoColors.systemBackground.light(),borderRadius: BorderRadius.circular(12.0),
)
7. 结语
CupertinoAlertDialog是一个在需要以iOS风格显示模态对话框时非常有用的组件。它不仅提供了必要的交互功能,还允许你根据应用的风格进行定制。使用CupertinoAlertDialog可以创建出既美观又实用的模态对话框,同时保持了Cupertino Design的一致性。记住,设计时应考虑用户的交互体验,确保对话框内容的可读性和易用性。通过上述示例,你应该能够理解如何在Flutter应用中使用CupertinoAlertDialog,并且可以根据你的需求进行自定义。
相关文章:
Flutter 中的 CupertinoAlertDialog 小部件:全面指南
Flutter 中的 CupertinoAlertDialog 小部件:全面指南 在Flutter中,CupertinoAlertDialog是用于在iOS风格的应用中显示警告或提示信息的模态对话框。它以其圆角卡片和模糊背景为特点,为用户提供了一个简洁而直观的交互界面。CupertinoAlertDi…...
【RAG 论文】UPR:使用 LLM 来做检索后的 re-rank
论文:Improving Passage Retrieval with Zero-Shot Question Generation ⭐⭐⭐⭐ EMNLP 2022, arXiv:2204.07496 Code: github.com/DevSinghSachan/unsupervised-passage-reranking 论文:Open-source Large Language Models are Strong Zero-shot Query…...
安全风险 - 如何解决 setAccessible(true) 带来的安全风险?
可能每款成熟的金融app上架前都会经过层层安全检测才能执行上架,所以我隔三差五就能看到安全检测报告中提到的问题,根据问题的不同级别,处理的优先级也有所不同,此次讲的主要是一个 “轻度问题” ,个人认为属于那种可改…...
创建继承自QObject的线程:一个详细指南
目录标题 步骤 1:创建一个新的QObject子类步骤 2:在新的QObject子类中实现工作代码步骤 3:创建一个新的QThread对象步骤 4:管理线程的生命周期步骤 5:处理线程间通信结论 在Qt中,线程可以通过继承QThread类…...
java项目之智慧图书管理系统设计与实现(springboot+vue+mysql)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的智慧图书管理系统设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 智慧图书管理…...
分享一些人生道理,希望能对大家有所帮助!
1. 别总想出风头,炫耀就是深渊,贪心就是毁灭,人性的恶一旦被激发,后果不堪设想。 2. 戒取怨之言:不要说招人怨恨的话,播下使人怨恨的种子。 3. 学会感恩,因为感恩能够让你更加幸福。 4. 玉碎不能…...
【设计模式】JAVA Design Patterns——Abstract-document(抽象文档模式)
🔍 目的 使用动态属性,并在保持类型安全的同时实现非类型化语言的灵活性。 🔍 解释 抽象文档模式使您能够处理其他非静态属性。 此模式使用特征的概念来实现类型安全,并将不同类的属性分离为一组接口 真实世界例子 考虑由多个部…...
5.13网络编程
只要在一个电脑中的两个进程之间可以通过网络进行通信那么拥有公网ip的两个计算机的通信是一样的。但是一个局域网中的两台电脑上的虚拟机是不能进行通信的,因为这两个虚拟机在电脑中又有各自的局域网所以通信很难实现。 socket套接字是一种用于网络间进行通信的方…...
那些年使用过的UA头
一些WAF会根据扫描器UA头进行屏蔽 UA头 在sqlmap 中可以使用 –random-agnet /xx.txt 来更换UA头 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60 Opera/8.0 (Windows NT 5.1; U; en) Mozi…...
IT技术产品:开发者极为重要的思维习惯
1、特色内容预告 1、我用敏捷开发思维,提高工作效率。 2、我用代码批判思维,逐渐让自己的作品变得无可挑剔。 3、我是一个顶级程序员,是哪些重要的专业习惯,让我如此优秀? 2、可以免费获取到的IT资源 1、《软件工程&a…...
软件产品质量模型及其子特性
一、功能性 子特性: 功能的完备性 功能正确性 功能适合性 功能性的依从性 二、性能效率 子特性: 时间特性 资源利用性 容量 性能效率的依从性 三、兼容性 子特性: 共存性 互操作性 兼容性的依从性 四、易用性 子特性: 可辨识性…...
神经网络中的误差反向传播(Backpropagation)方法理解
想象一下,神经网络就像是一个复杂的迷宫,里面有许多交叉路口(神经元),每个路口都有指示牌告诉你往哪个方向走(权重),而你的目标是找到从入口到出口的最佳路径,使得从起点…...
Day 32 shell变量及运算
一:变量概述 1.什么是变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念 变量可以通过变量名访问,在指令式语言中,变量通常是可变的;在某些条件下也是不可变的 2.变量的规则 命名只…...
八、VUE内置指令
一、初识VUE 二、再识VUE-MVVM 三、VUE数据代理 四、VUE事件处理 五、VUE计算属性 六、Vue监视属性 七、VUE过滤器 七、VUE内置指令 九、VUE组件 v-text 向其所在的节点中渲染文本内容。 (纯文本渲染)与插值语法的区别:v-text会替换掉节点中的内容,{{x…...
学习笔记:IEEE 1003.13-2003【POSIX PSE53接口列表】
一、POSIX PSE53接口列表 根据IEEE 1003.13-2003,整理了POSIX PSE53接口API(一共126个),每个API支持链接查看。 IEEE POSIX接口online搜索链接: The Open Group Base Specifications Issue 7, 2018 edition 详细内…...
springboot logback 日志注入安全问题 统一处理
背景 日志注入一般指的是恶意用户输出换行等内容,混淆正常的日志,导致排查问题是无法正确定位问题,因此,我们需要对要打印的日志内容进行过滤。 但是,如果是每个接口单独处理的话,成本较高,因此…...
linux进阶高级配置,你需要知道的有哪些(13)-Squid代理服务器
1、squid代理的作用:缓存网页对象,减少重复请求 2、代理的基本类型 传统代理:适用于Internet互联网,需明确指定服务端(浏览器需要配置) 透明代理:适用于共享上网网关,不需要指定服务…...
SpringBoot自动装配(二)
近日,余溺于先贤古哲之文无法自拔。虽未明其中真意,但总觉有理。遂抄录一篇以供诸君品鉴——公孙鞅曰:“臣闻之:‘疑行无名,疑事无功。’君亟定变法之虑,殆无顾天下之议之也。且夫有高人之行者,…...
数据结构 顺序表1
1. 何为顺序表: 顺序表是一种线性数据结构,是由一组地址连续的存储单元依次存储数据元素的结构,通常采用数组来实现。顺序表的特点是可以随机存取其中的任何一个元素,并且支持在任意位置上进行插入和删除操作。在顺序表中…...
C++基础-编程练习题1
文章目录 一、哥德巴赫猜想二、哥德巴赫猜想2三、打印成绩单四、成绩输入输出五、数组输出奇数位偶数位 一、哥德巴赫猜想 【试题描述】 哥德巴赫提出了以下的猜想:任何一个大于 2 的偶数都可以表示成 2 个质数之和。 质数是指除了 1 和本身之外没有其他约数的数&a…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
