在 Flutter 中创建弹出对话框

2024-02-03

我需要一种在颤动中创建弹出对话框的方法。

我能够根据需要创建“双色调”设计和一个对话框,但是当用户单击按钮导航到此屏幕时,我无法找到弹出对话框的方法。

创建视图的代码:

class CreateID extends StatelessWidget {
  const CreateID({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: cPrimaryColor,
      body: SafeArea(
        child: Column(
          children: [
            Expanded(
              child: Container(
                width: double.infinity,
              ),
            ),
            Expanded(
              child: Container(
                width: double.infinity,
                decoration: BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.only(
                    topLeft: Radius.circular(20.0),
                    topRight: Radius.circular(20.0)
                  )
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

这是该对话框的代码:

class PopUp extends StatelessWidget {
const PopUp({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
  body: SafeArea(
    child: FutureBuilder<dynamic>(
        future: showDialog(
            context: context,
            builder: (BuildContext context) {
              return AlertDialog(
                content: Stack(
                  overflow: Overflow.visible,
                  children: <Widget>[
                    Positioned(
                      right: -40.0,
                      top: -40.0,
                      child: InkResponse(
                        onTap: () {
                          Navigator.of(context).pop();
                        },
                        child: CircleAvatar(
                          child: Icon(Icons.close),
                          backgroundColor: Colors.red,
                        ),
                      ),
                    ),
                    Form(
//key: _formKey,
                      child: Column(
                        mainAxisSize: MainAxisSize.min,
                        children: <Widget>[
                          Padding(
                            padding: EdgeInsets.all(8.0),
                            child: TextFormField(),
                          ),
                          Padding(
                            padding: EdgeInsets.all(8.0),
                            child: TextFormField(),
                          ),
                        ],
                      ),
                    ),
                  ],
                ),
              );
            }),
        builder: (BuildContext context, AsyncSnapshot<dynamic> 
snapshot) {
          throw UnimplementedError;
        }),
  ),
);
}
}

理想的结果是当用户被“推送”(通过单击按钮)到 CreateID 屏幕时,它将弹出该对话框。


尝试下面的代码希望对您有帮助。

您的小部件:

Center(
  child: TextButton(
    onPressed: () {
      showDataAlert();
    },
    child: Text(
      'Pressed',
    ),
  ),

您的警报功能:

showDataAlert() {
  showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.all(
              Radius.circular(
                20.0,
              ),
            ),
          ),
          contentPadding: EdgeInsets.only(
            top: 10.0,
          ),
          title: Text(
            "Create ID",
            style: TextStyle(fontSize: 24.0),
          ),
          content: Container(
            height: 400,
            child: SingleChildScrollView(
              padding: const EdgeInsets.all(8.0),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.start,
                crossAxisAlignment: CrossAxisAlignment.start,
                mainAxisSize: MainAxisSize.min,
                children: <Widget>[
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Text(
                      "Mension Your ID ",
                    ),
                  ),
                  Container(
                    padding: const EdgeInsets.all(8.0),
                    child: TextField(
                      decoration: InputDecoration(
                          border: OutlineInputBorder(),
                          hintText: 'Enter Id here',
                          labelText: 'ID'),
                    ),
                  ),
                  Container(
                    width: double.infinity,
                    height: 60,
                    padding: const EdgeInsets.all(8.0),
                    child: ElevatedButton(
                      onPressed: () {
                        Navigator.of(context).pop();
                      },
                      style: ElevatedButton.styleFrom(
                        primary: Colors.black,
                        // fixedSize: Size(250, 50),
                      ),
                      child: Text(
                        "Submit",
                      ),
                    ),
                  ),
                  Container(
                    padding: const EdgeInsets.all(8.0),
                    child: Text('Note'),
                  ),
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Text(
                      'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt'
                      ' ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud'
                      ' exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.'
                      ' Duis aute irure dolor in reprehenderit in voluptate velit esse cillum '
                      'dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,'
                      ' sunt in culpa qui officia deserunt mollit anim id est laborum.',
                      style: TextStyle(fontSize: 12),
                    ),
                  ),
                ],
              ),
            ),
          ),
        );
      });
}

参考我的回答here https://stackoverflow.com/a/70002958/13997210也适用于警报对话框设计

Your result screen-> enter image description here

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

在 Flutter 中创建弹出对话框 的相关文章

  • 当我的带有 Firestore 的 Flutter 应用程序从 Android 后台恢复时,查询速度非常慢

    使用颤振1 20 2 我的 Flutter 应用程序使用 Firestore 作为后端数据库 对于我正在使用的当前版本以及在该移动应用程序的整个开发过程中 我注意到 如果我的应用程序在后台运行一段时间 可能是几分钟 那么当我将应用程序带回前
  • 如何在Flutter中为GridView中的Widget设置自定义高度?

    即使在指定 Container GridView 的高度之后 我的代码也会生成方形小部件 class MyHomePage extends StatefulWidget MyHomePage Key key this title super
  • Flutter mysql1 数据包乱序

    我在建立 VPS 与图书馆的连接时遇到一些问题mysql1上颤动 我收到这个错误Unhandled Exception Error 1156 08S01 Got packets out of order当我执行查询时 MySQL服务器版本
  • 更改 Flutter Web 应用程序中的屏幕尺寸

    我正在使用 Flutter 构建一个 Web 应用程序 但我想模仿 iPhone 屏幕视图 我知道调整窗口大小可以达到这种效果 但是有没有办法将所有内容包装在手机屏幕图形的框架中 或者更改 MaterialApp 的尺寸 使其包含在手机屏幕
  • Flutter:如何在 Web 视图中启用手势?

    我想在 Flutter 中通过捏合和张开来放大我的网页视图页面 我在网上做了一些研究 我在某处发现了这个 虽然 WebView Android 和 UIWebView iOS 内置了捏合和缩放功能 但它们需要 打开 在Android中 插件
  • 导航到新屏幕时状态栏颜色

    我在我的中使用以下build 第一个屏幕更改状态栏颜色的方法 效果很好 1st screen s build method SystemChrome setSystemUIOverlayStyle SystemUiOverlayStyle
  • 如何删除 Flutter 中的调试横幅?

    我在用着flutter screenshot我预计屏幕截图不会有横幅 但它有 请注意 我得到了not supported for emulator配置文件和发布模式的消息 On your MaterialApp set debugShowC
  • Flutter,在第1页时无法点击第2页

    我创建了一个PageView有 3 个页面 每个页面都有一个按钮 单击每个按钮应滚动到该页面 如果在第 2 页 则上一页和下一页都是可点击的 如果它位于第 3 页 则可以单击上一页 如果是在第一页 下一页不可点击 更新 当在 page1 上
  • flutter run 无法在 iOS 模拟器上运行,但 Xcode 可以构建

    在我的 Flutter 项目中 flutter run命令无法将项目构建到 iOS 模拟器 但在 Xcode 中 当我单击构建按钮时 Xcode 可以毫无问题地构建它 我正在使用 AgoraRTC 库 添加 Flutter Quill 后就
  • C# 显示对话框线程

    我有一个Dialog Box 导入器 我用它来选择要导入到应用程序中的文件 这Dialog Box 导入器 还有另一个对话框 文件 它是OpenFileDialog 代码运行如下 Main File if Importer ShowDial
  • 颤动中的单选按钮对齐

    我是颤振的新手 我想对齐单选按钮 即 无论文本是什么 单选按钮都应该按列对齐 我在用Column然后小部件Row其中的小部件但得到以下结果 代码在这里 Widget build BuildContext context return Con
  • Flutter firestore插件无法通过where和isEqualTo的组合来获取数据

    我在 Firestore 中有一个名为 trips 的集合 数据格式是这样的 我正在尝试使用下面的代码访问该集合的文档 第一种方式 try Firestore instance collection trips where createdB
  • 显示菜单位置 Flutter

    我有一个 GridView 小部件 其中包含一些用 GestureDetector 包裹的 GridTiles 当我长按它时 尝试显示一个菜单以删除 GridTile 一切都很好 除了我希望从我拥有的点开始显示该菜单点击的不是应用程序的顶部
  • Flutter:从子级检索顶级状态返回 null

    我正在尝试使用 of 方法获取应用程序的顶级状态 类似于 Scaffold of 函数 这是 精简的 代码 class IApp extends StatefulWidget override IAppState createState g
  • flutter 中 Future.delayed 与 Timer 有什么区别

    我想知道延迟代码执行的 Future delayed 和 Timer 方法之间的区别 两者似乎都做同样的事情 未来 延迟 Future delayed const Duration milliseconds 500 code VS Time
  • 带有 Firebase 通知的 Flutter Web - subscribeToTopic

    我想在我的 flutter web 应用程序中接收 firebase 通知 我知道 firebase messaging 包不可用于网络 但我已经管理配置我的应用程序以获取令牌 在网络应用程序位于后台时接收并显示消息 并在应用程序位于前台时
  • 如何在 Flutter App 中按时间注销?

    如果用户在登录后对应用程序没有反应或不活动超过 5 分钟 我需要从应用程序中注销用户 该应用程序将转到主登录页面 我尝试实施给定的解决方案here https stackoverflow com questions 52602606 how
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • Flutter:构造函数中 List 参数的默认分配

    在定义构造函数时 是否可以将常量值分配给数据类型 List 的可选参数 例如 class sample final int x final List
  • 未安装 Visual Studio;这对于 Windows 开发是必要的

    My 颤振医生 https docs flutter dev get started install windows run flutter doctor是说 Visual Studio develop for Windows X Visu

随机推荐

  • 在 Magento 中显示客户属于哪个组

    我在 Magento 中设置了几个客户组 常规 启用采购订单 我想知道这是否很容易在客户的帐户区域中显示给客户 以便他们可以看到自己属于哪个组 也许 MagePsycho 从旧版本中得到它 但在 1 5 上你需要更改组模型 Check Cu
  • 收到错误:找不到 id 为“id”的列

    我试图用数据填充垫表 但收到错误 Could not find column with id id 当我尝试这样做时 这就是我在组件文件中完成的方法 export class ListAllTrucksComponent displayed
  • Android Spinner 错误:android.view.WindowManager$BadTokenException:无法添加窗口

    我想使用 String 或 ArrayList 设置微调器值 我已经在其他活动中完成了微调器 工作正常 在此活动中 选项卡活动组中的另一个选项卡活动 我的问题是将值设置为微调器 微调器显示正确 这意味着加载活动时 工作正常 但当我单击 微调
  • 有没有办法通过多个用户名获取用户[Keycloak Admin Rest API]

    我是这个 keycloak 用户管理的新手 基本上我想在用户名字段上使用 IN 条件来获取用户 很不幸的是 不行 请参阅 REST API 文档 https www keycloak org docs api 15 0 rest api i
  • 创建具有特定长度和宽度的二维数组[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 见标题 我基本上需要它来创建一个可以
  • 文本框输入,键盘禁用,条形码扫描仪保留

    我制作了一个带有文本框的 Windows 窗体应用程序 我将强制用户使用条形码扫描仪 因此应该禁用键盘输入 KeyPressed 事件不起作用 因为也禁用了来自条形码扫描仪的输入 我想也许我可以在 TextChanged 事件上设置一个计时
  • 将 Google 电子表格日期转换为 JS Date 对象?

    我一直在绕圈子 我有一个包含两个日期的电子表格 我需要找到两个日期之间经过的年数 即某人在给定日期的年龄 这是Excel 的 DATEDIF 的替代品 第一步是将 Google 的序列号转换为 JS Date 对象 但似乎没有 Date 构
  • 如何在 Selenium 2 中实现 wait_for_page_to_load ?

    我是自动化 Web 测试的新手 目前正在从旧的 Selenium RC 实现迁移到 Ruby 中的 Selenium 2 有没有办法在页面加载之前停止执行命令 类似于 wait for page to load 在 Selenium RC
  • 解锁 PHPExcel 上的所有单元格

    SOLVED 找到自己解决这个问题的正确方法 使用类似PHPExcel getDefaultStyle gt getProtection gt setLocked fals e 这很棒 首先 Excel默认的单元格保护设置是 锁定 可见 我
  • WCF 自动生成 WSDL

    我有这个服务定义 DataContract public class Test DataMember IsRequired true public TestArray array DataContract public class Test
  • 语义 Ui 菜单不起作用

    我正在尝试使用语义 ui 菜单 但我无法让它工作 即当我单击菜单中的项目时 活动状态没有改变 我在网上也没有找到任何例子 HTML div class ui grid div class one wide row div class ui
  • 如何通过脚本以编程方式确定已安装的 IE 版本

    我们有一个基于selenium grid的自动化测试集群 为了管理集群 我构建了一个 Rake Ruby 任务集合 可以启动 重新启动 ping 和停止节点 我正在多种浏览器 包括 IE6 IE7 和 IE8 上测试我们的应用程序 这意味着
  • 如何在javascript中调整Base64图像的大小

    我测试了这个包 https preview npmjs com package resize base64 https preview npmjs com package resize base64 它需要前端部分来制作Canvas元素 等
  • Relay 和 GraphQL 中的身份验证

    我一直在使用反应和中继开发一个应用程序 现在我一直致力于实现身份验证 我知道您可以通过 GraphQL 解析函数中提供的上下文将值传递给每个 graphql 请求 我更困惑的是要传递什么以及如何传递 使用 JSON Web 令牌 护照或其他
  • 有什么快速方法可以使用 pandas 获得时间序列数据的正确聚合输出?

    我用过Redfin房地产数据 其中记录了芝加哥地区每个地区多年来的每月房屋销售价格 我想先计算该城市的年平均房屋销售价格 同时我还想获得每个区域的年房屋销售价格变化 然后我想将每个区域的年销售价格变化与各自的年平均房屋销售价格进行比较在城市
  • 动态添加按钮到面板并获取其父 ID

    我创建了一个页面 为管理员提供了一种更改照片信息 例如标题 描述等 的方法 页面上的所有控件都是动态添加的 因为我有多个照片库 面板 gt 父级 button 标题文本框 描述文本框 在每个面板中 我都有一个按钮 单击该按钮会将更改后的信息
  • 32 位编译在 64 位 Ubuntu 16.04 上失败

    我有一个应用程序需要使用 glib 和第三方提供的 32 位库 当我在 32 位 Ubuntu 上编译时 应用程序构建并成功运行 但是 当我在 64 位 Ubuntu 上尝试相同的操作时 由于以下错误而无法构建 usr include gl
  • CGPDFDocument 和 CGPDFPage 的 MonoTouch CoreGraphics PDF 内存问题

    我已经使用 MonoTouch 3 周了 一切都很顺利 直到我必须在我的应用程序中显示 PDF 使用苹果的Quartz 2D 编程指南 http developer apple com mac library documentation G
  • 如何录制媒体播放器中当前正在播放的实时视频流

    我用谷歌搜索了很多 但没有发现任何成功 甚至没有一个可以让我启动的点 我正在使用 VideoView 播放来自 url 的视频 成功播放视频 同时我想录制当前播放的视频 例如 http ip streamname playlist m3u8
  • 在 Flutter 中创建弹出对话框

    我需要一种在颤动中创建弹出对话框的方法 我能够根据需要创建 双色调 设计和一个对话框 但是当用户单击按钮导航到此屏幕时 我无法找到弹出对话框的方法 创建视图的代码 class CreateID extends StatelessWidget