如何在 Flutter 中制作 AlertDialog?

2023-12-01

我正在学习在 Flutter 中构建应用程序。现在我来到了警报对话框。我以前做过Android and iOS,但是如何在 Flutter 中发出警报呢?

以下是一些相关的问题:

  • 如何在 Flutter 中设置 AlertDialog 操作的样式
  • 在 flutter 的警报对话框中添加下拉菜单
  • 在应用程序主屏幕上自动加载显示警报对话框
  • 如何在flutter中刷新alertdialog
  • 颤动中带有圆角的警报对话框

我想做一个更一般的规范问答,所以我的答案如下。


一键式

showAlertDialog(BuildContext context) {

  // set up the button
  Widget okButton = TextButton(
    child: Text("OK"),
    onPressed: () { },
  );

  // set up the AlertDialog
  AlertDialog alert = AlertDialog(
    title: Text("My title"),
    content: Text("This is my message."),
    actions: [
      okButton,
    ],
  );

  // show the dialog
  showDialog(
    context: context,
    builder: (BuildContext context) {
      return alert;
    },
  );
}

两个按钮

showAlertDialog(BuildContext context) {

  // set up the buttons
  Widget cancelButton = TextButton(
    child: Text("Cancel"),
    onPressed:  () {},
  );
  Widget continueButton = TextButton(
    child: Text("Continue"),
    onPressed:  () {},
  );

  // set up the AlertDialog
  AlertDialog alert = AlertDialog(
    title: Text("AlertDialog"),
    content: Text("Would you like to continue learning how to use Flutter alerts?"),
    actions: [
      cancelButton,
      continueButton,
    ],
  );

  // show the dialog
  showDialog(
    context: context,
    builder: (BuildContext context) {
      return alert;
    },
  );
}

三个按钮

showAlertDialog(BuildContext context) {

  // set up the buttons
  Widget remindButton = TextButton(
    child: Text("Remind me later"),
    onPressed:  () {},
  );
  Widget cancelButton = TextButton(
    child: Text("Cancel"),
    onPressed:  () {},
  );
  Widget launchButton = TextButton(
    child: Text("Launch missile"),
    onPressed:  () {},
  );

  // set up the AlertDialog
  AlertDialog alert = AlertDialog(
    title: Text("Notice"),
    content: Text("Launching this missile will destroy the entire universe. Is this what you intended to do?"),
    actions: [
      remindButton,
      cancelButton,
      launchButton,
    ],
  );

  // show the dialog
  showDialog(
    context: context,
    builder: (BuildContext context) {
      return alert;
    },
  );
}

处理按钮按下操作

The onPressed上面示例中按钮的回调是空的,但您可以添加如下内容:

Widget launchButton = TextButton(
  child: Text("Launch missile"),
  onPressed:  () {
    Navigator.of(context).pop(); // dismiss dialog
    launchMissile();
  },
);

如果您进行回调null,则该按钮将被禁用。

onPressed: null,

enter image description here

补充代码

这是代码main.dart如果您没有运行上面的功能。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter'),
        ),
        body: MyLayout()),
    );
  }
}

class MyLayout extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: ElevatedButton(
        child: Text('Show alert'),
        onPressed: () {
          showAlertDialog(context);
        },
      ),
    );
  }
}

// replace this function with the examples above
showAlertDialog(BuildContext context) { ... }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Flutter 中制作 AlertDialog? 的相关文章

随机推荐

  • 从草书连续手写图像中提取字符图像

    I am trying to extract individual character as an image from below 我有一个 python 代码 它能够按顺序提取每一行和单词 但是 它无法识别和提取每个字符 下面是我正在使
  • 通过链接报告中的返回链接按钮返回原始报告,并在主报告中使用多选参数

    我正在处理 ssrs 报告 我有一份总结和一份详细报告 详细报告链接到摘要报告 现在用户希望在详细报告中具有 返回摘要报告 链接 我的主要问题是我在摘要报告中有多选参数 如果我有单一选择参数 我就知道解决方案 在这种情况下 我可以创建一个文
  • “go run -gcflags -m xxx.go”的输出是什么意思

    尝试检查 go 程序中局部变量是否分配在堆或堆栈上 并且无法确定 go 的 gc 的某些输出的含义 Code 变量 堆 stack go variable heap stack learn run with go run gcflags m
  • nginx codeigniter 502 错误网关

    nginx的配置如下 server listen 80 server name www example com root home wwwroot example com index index php index html index h
  • 如何在C#中拦截每个尝试使用API​​函数?

    我需要阻止计算机上的任何屏幕捕获软件进行屏幕截图 由于它们都在标准 API 函数上工作 我想我可以监视和阻止它们 我需要使用 C 我所发现的只是如何在某个程序 屏幕捕获程序 中监视和阻止它们 他们在程序中寻找一个函数 然后将其地址更改为我的
  • 底层提供者在开放实体框架上失败

    我正在网络应用程序中取消实体框架 早些时候一切都工作正常 但后来我从 Sql Server 中删除了数据库 之后 每当我运行该应用程序时 我都会收到以下异常 The underlying provider failed on open en
  • Numpy 数组切片

    我有一个一维 numpy 数组和一些偏移 长度值 我想从该数组中提取属于偏移量 偏移量 长度范围内的所有条目 然后将其用于从原始数组构建一个新的 简化 数组 该数组仅包含由偏移量 长度对选取的值 对于单个偏移 长度对 这对于标准数组切片来说
  • 将函数应用于 data.table 中的每个指定列并按引用更新

    我有一个 data table 我想用它对某些列执行相同的操作 这些列的名称在字符向量中给出 在这个特定的示例中 我想将所有这些列乘以 1 一些玩具数据和指定相关列的向量 library data table dt lt data tabl
  • SSH 在通过 ipv6 连接时超时,但适用于 ipv4 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 昨天我重新安装了 Ubuntu 出于不相关的原因 从那时起 ssh 的行为就非常奇怪 连接需要很长时间 几分钟 使用 vvv 我发现它首先尝试使用 ipv6 连接 超时 然后尝试通过
  • Git - 如何将本地存储库提交到另一个本地存储库的子文件夹?

    我有一段时间开始了一个 Django 项目 并将其托管在 bitbucket 上 现在我需要将它托管在 openshift 上 方法是它们为您提供一个 git 存储库 每次您推送时它们都会自动部署 问题是存储库附带了几个用于配置和设置的顶级
  • 同一主机/端口上的 Wcf HTTP 和 HTTPS

    Hello 我知道如何为 http 或 https 创建自托管 wcf 但不能同时创建 我想要这两个网址的 wcf https 127 0 0 1 13070 ProxySips http 127 0 0 1 13070 ProxySips
  • rust 宏扩展忽略标记 `,` 和任何后续内容

    这确实有效 macro rules x2 x expr gt x x let a x2 0 但非常相似 macro rules x2 x expr gt x x removed brackets let a x2 0 added brack
  • 如何让msbuild不重建所有项目

    我们有CCnet msbuild tfs 为每个项目配置构建 我们没有使用解决方案进行构建 问题是如果我们只创建 1 个项目 我们应该如何配置构建而不再次重建所有项目 与源代码控制中的一个确切项目相关的更改 有什么办法可以提出一些条件吗 应
  • 在 Flask 应用程序中运行 Dash 应用程序

    我有一个现有的 Flask 应用程序 并且我想要一条通往另一个应用程序 更具体地说 第二个应用程序是阴谋冲刺应用程序 如何在现有 Flask 应用程序中运行 Dash 应用程序 app route plotly dashboard def
  • 如何在DataGridTextColumn中显示Enum类型?

    我已经列出了列表 并将这些列表绑定到工作正常的数据网格 但在该规则类中 我有一个枚举类型 即 类型 因此在数据网格中 我将类型列设置为空 那么我如何获得枚举输入数据网格列请帮助我 谢谢 nagaraju 通常它应该通过绑定直接转换为它的字符
  • 通过IP地址获取用户位置[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我有一个用 C 编写的 ASP NET 网站 在此站点上 我需要根据用户的位置自动显示起始页 我可以根据用户的IP地址获取用户所在城市的名称吗 您需
  • ASP.NET 表单身份验证

    我有以下 ASP NET 表单身份验证配置
  • 有序地图实现

    我正在寻找一个 Map 实现 它按照添加键值对的顺序迭代键值对 例如 Map orderedMap instantiation omitted for obvious reasons orderMap put 4 d orderMap pu
  • 如何使用 GPML (Matlab) 进行回归的 2D 高斯过程?

    我有一个Nx2输入矩阵称为X 我也有输出值Y这是一个向量Nx1 我创建一些数据进行测试 如下所示 Xtest linspace x min x max n Ytest linspace y min y max n 所以 矩阵Z is of
  • 如何在 Flutter 中制作 AlertDialog?

    我正在学习在 Flutter 中构建应用程序 现在我来到了警报对话框 我以前做过Android and iOS 但是如何在 Flutter 中发出警报呢 以下是一些相关的问题 如何在 Flutter 中设置 AlertDialog 操作的样