第三十四回:AlertDialog Widget

news/2024/10/21 3:31:23/

文章目录

  • 概念介绍
  • 使用方法
  • 示例代码

我们在上一章回中介绍了Dismissible Widget相关的内容,本章回中将介绍 AlertDialog Widget.闲话休提,让我们一起Talk Flutter吧。

概念介绍

我们介绍的AlertDialog是指程序中弹出的确认窗口,其实我们在上一章回中删除ListView中的内容时已经使用过了,只是没有介绍它的用法而已,本章回中将详细
介绍它的使用方法。

使用方法

和其它的Widget一样,AlertDialog提供了相关的属性来控制自己,接下来我们将介绍一些常用的属性:

  • title属性:主要用来显示对话框的标题;
  • content属性:主要用来显示对话框中的内容;
  • actions属性:主要用来显示对话框中的按钮,它的类型是List,因此可以接收多个按钮,类似Column中的children属性;

AlertDialog需要配合showDialog()方法才能使用,该方法中包含两个重要的参数,一个是上下文的环境context,一个是builder,该参数主要用来构造对话框。具体的用法看代码就能明白。该方法可以看作是对话框的构造器,它还可以创建其它类型的对话框。

示例代码

_showAlertDialog() {showDialog(context: context,builder: (BuildContext context) {return AlertDialog(title: Text("Alert Dialog"),content: Text("This is a Example of  AlerDialog"),actions: [TextButton(onPressed: () {print("Yes selected");Navigator.of(context).pop();},child: const Text("Yes"),),TextButton(onPressed: () {print("No selected");Navigator.of(context).pop();},child: const Text("No"),),],);});
}

在上面的代码中除了对话框相关的属性外,还有一个注意点:Navigator,我们首先获取当前的Navigator,然后进行pop操作,这样就可以关闭弹出的对话框窗口。我们把该操作放在了Button的onPress方法中,这样可以在点击Button的同时关闭窗口。除了关闭窗口外,可以在该方法中添加相关的业务处理,比如我们在上一章回中删除项目的操作就添加到了该方法中。这里的代码只是为了演示对话框,因此没有添加相关的业务代码。

代码中使用的是TextButton widget,大家也可以换成其它的Button,不过Button的风格最好与当前对话框的风格保持一致,不然它们组合在一起会有一种不协调的感觉。

此外,我们把对话框相关的代码封装到了一个方法中,把方法赋值给Button的onPress属性,当点击Button时就会弹出对话框,示例代码如下:

ElevatedButton(onPressed: () => _showAlertDialog(),child: const Text("Show Dialog"),
)

这里只列出了核心代码,完整的代码可以查看Github上ex019文件中的代码。编译并且运行上面的程序将会显示一个按钮,点击按钮就会弹出对话框,点击对话框中的yes或者no按钮后对话框就会消失。我在这里就不演示程序的运行结果了,建议大家自己动手去实践。

看官们,关于AlertDialog Widget相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!


http://www.ppmy.cn/news/90011.html

相关文章

网易易盾流量多发反外挂落地实践

背景及目的 环境迁移 反外挂服务建德机房线上迁移,采取的方案是:建德机房独立部署一套完整的集群,统一经由完整的性能测试、故障演练、功能回归后,通过线上分阶段切换流量的方式来切服务。QA 需要比对验证 2 个不同环境下核心接口…

多目标遗传算法NSGA-II改进策略

上篇写道了关于多目标遗传算法NSGA-II原理详解及算法代码实现,本文将继续在这篇文章的基础上更深一步的向前探索,探索方向为: 基于NSGA-II算法的固有缺点,着重对其算法提出改进策略,并予以代码实现。同样,本…

1112 Stucked Keyboard (PAT甲级)

写完后看柳婼的解法&#xff0c;其实可以直接数重复了几次&#xff0c;我这个写法有点复杂化了。 原代码&#xff1a; #include <iostream> #include <string> #include <set>int main(){int k, j;bool flag;std::set<char> st, printed;std::string…

codeforce第874轮(div3)

地址&#xff1a;codeforce第84轮&#xff08;div3&#xff09; A&#xff1a; 题目的意思是&#xff1a;给定我们一堆包含两个字符的字符串&#xff0c;字符串a和字符串b只要a的后一个字母和b的前一个字母相等即可链接&#xff0c;现在给出最后链接好的字符串&#xff0c;问…

〖Web全栈开发⑤〗— CSS基础

〖Web全栈开发⑤〗— CSS基础 (一)CSS基础1.1CSS介绍1.2CSS样式1.3CSS 格式 &#xff08;二&#xff09;CSS 选择器2.1标签选择器2.2类选择器2.3层级选择器2.4id选择器2.5组选择器2.6伪类选择器2.7通配符选择器 &#xff08;三&#xff09;样式表引入3.1外部样式表3.2内部样式表…

二总线-MBus讲解

二总线的叫法演变是从多线到总线再到二总线这么一个过程&#xff0c;尤其在楼宇的消防领域&#xff0c;报警的设备总线基本已经是二总线了&#xff0c;其特点就是电源与通信一起传输&#xff0c;本质上是一个电力载波的思路。那么现在的powerbus二总线又是一个极端&#xff0c;…

知识变现海哥:如何把自己的想法变现?

高手都懂得&#xff0c;简单三招&#xff0c;卖掉自己的想法。 把自己的思维装入别人的大脑&#xff0c;把别人的钱装进自己的口袋。 招一&#xff1a;把已知的事情和知识&#xff0c;变成未知的。 网络自媒体大行其道&#xff0c;你经常会看到听到一些新名词&#xff0c;仔细…

学习go的操作(本人已有c的基础,请思考后再看)

建立一个文件&#xff08;我的第一个文件是hellow.go&#xff09;&#xff0c;后在终端执行一下几步&#xff1a;我用的是go build先编译成了可执行文件&#xff08;.exe&#xff09;【1.go build hellow.go 2.hellow.exe】。当然&#xff0c;你也可以用go run直接运行【…