第二百五十八回

news/2025/2/12 8:32:10/

文章目录

  • 1. 概念介绍
  • 2. 思路与方法
    • 2.1 实现思路
    • 2.2 实现方法
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"模拟对话窗口的页面"相关的内容,本章回中将介绍如何创建一个可以输入内容的对话框.闲话休提,让我们一起Talk Flutter吧。

1. 概念介绍

我们在本章回中介绍的对话框是一种自定义的对话框,它和普通的对对话框类似,也是弹出式窗口,它最大的特点在弹出式窗口中支持输入功能。下面是具体的效果图,我
们将在本章回中详细介绍它的的实现方法。039inputDialog

2. 思路与方法

2.1 实现思路

实现弹出式窗口可以自己创建,也可以复用官方的AertDialog或者AboutDialog组件,我们选择后者。窗口的输入内容使用TextField组件实现。剩下的两个确认
按钮可以复用Dialog中的,或者自定义。我们选择后者,因为官方的两个按钮布局是固定的,不好修改。

2.2 实现方法

有了实现思路后,我们就可以按照思路来创建对话框,下面是详细的实现步骤,请大家参考:

  • 创建一个AlertDialog组件,它负责显示窗口;
  • 创建一个布局,布局中包含TextField和两个按钮组件;
  • 把上一步中创建的布局赋值给AlertDialog的content属性;
  • 使用ShowDialog方法实现对话框的弹出功能;

3. 示例代码

///自定义Dialog:中间是一个输入框,下面是两个按钮
_showCustomDialog() {showDialog(context: context,builder: (BuildContext context) {double width = MediaQuery.of(context).size.width;double height = MediaQuery.of(context).size.height;///自定义Dialog,通过container控制大小return AlertDialog(///两颜色同时设置才有效果surfaceTintColor: Colors.white,///这个是对话框窗口的背景颜色backgroundColor: Colors.white,///修改对话框的圆角,默认带圆角,可以不处理,下面的代码给对话框镶了一个金边shape: OutlineInputBorder(borderRadius: BorderRadius.circular(30),borderSide: const BorderSide(color: Colors.yellow,width: 4),),content: Container(alignment: Alignment.center,padding: const EdgeInsets.only(top: 48,bottom: 8),width: width - 16*2,height: height/4,decoration: BoxDecoration(borderRadius: BorderRadius.circular(0),),child: Column(children: [Expanded(flex: 2,child: TextField(decoration: InputDecoration(///输入框最左侧和最右侧的图标prefixIcon: const Icon(Icons.mail),suffixIcon: const Icon(Icons.delete),///输入框的填充颜色filled: true,fillColor: Colors.black26,///输入框的边框,不同状态下有不同的边框enabled: true,disabledBorder: OutlineInputBorder(borderSide: const BorderSide(color: Colors.redAccent,width: 4),borderRadius: BorderRadius.circular(16),),border: OutlineInputBorder(borderSide: const BorderSide(color: Colors.redAccent,width: 4),borderRadius: BorderRadius.circular(16),),///输入时显示的边框focusedBorder: OutlineInputBorder(borderSide: const BorderSide(color: Colors.blue,width: 4),borderRadius: BorderRadius.circular(16),),),),),Expanded(flex: 1,child: Row(mainAxisAlignment: MainAxisAlignment.spaceAround,children: [ElevatedButton(onPressed: (){}, child: const Text("Yes"),),ElevatedButton(onPressed: (){}, child: const Text("No"),),],),)],),),);},);
}

上面是实现对话框的代码,代码中添加了注释方便大家理解,此外,我再介绍一些细节:对话框的背景颜色需要同时修改前景和背景颜色才有效果;对话框默认有圆角,
如果想修改圆角的大小可以通过它的shap属性来修改;对话框中所有的内容都通过content属性来控制,自定义的空间非常高;对话框的大小与它里面的子控件的大小相
关,可以通过控制content中组件的大小间接控制对话框的大小;

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 创建自定义对话框以AlertDialog为基础;
  • 对话框中自定义的内容通过content属性来实现;
  • 对话框的颜色和形状等主题相关的内容仍然使用原来的属性;
  • 弹出对话框时仍然使用官方提供的showDialog()方法;
    看官们,与"创建一个可以输入内容的对话框"相关的内容就介绍到这里,大家可以自定义属于自己风格的对话框,欢迎大家在评论区交流与讨论!

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

相关文章

图片分类的脚本

当前有个名为“image”的文件夹和名为“label”的txt文件,txt文件里的每一行包含了“photos”文件夹里每一个图片文件的文件名 一个空格 对应的标签(1、2....8),请编写一个脚本,并创建一个新的文件夹,里面…

用js做点击切换携程旅游

样式&#xff1a; <style>.domestic {width: 1200px;margin: 50px auto;}.domestic span {padding: 2px 10px;margin: 10px 10px;border-radius: 12px;cursor: pointer;float: left;border: 1px solid transparent;}.domestic > div span:hover {border-color: #f66;b…

增加索引 + 异步 + 不落地后,从 12h 优化到 15 min

目录 一、一般我会这样做&#xff1a;二、谁写的&#xff1f;赶紧加班优化&#xff0c;会追责吗&#xff1f;优化1&#xff1a;数据库中添加对应的索引&#xff0c;提高查询速度优化2&#xff1a;采用 异步 多线程 的方式进行导出优化3&#xff1a;不解密 图片不落地&#xf…

Abaqus许可管理安全策略:保护您的知识产权和业务安全

在当今的知识产权保护和许可管理领域&#xff0c;安全策略的制定和实施至关重要。Abaqus许可管理安全策略旨在保护企业的知识产权和业务安全&#xff0c;确保企业在日益激烈的市场竞争中保持领先地位。 一、Abaqus许可管理安全策略的核心优势 严密保护知识产权&#xff1a;Aba…

Spring MVC 参数接收

参数接收 Springmvc中&#xff0c;接收页面提交的数据是通过方法形参来接收&#xff1a; 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参 springmvc接收的参数都是String类型&#xff0c;所以spirngmvc提供了很多converter&#xff08;转换器…

手撕单链表(单向,不循环,不带头结点)的基本操作

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

Java反射获取实例并填充注解值

文章目录 1.场景2.普通实现方式3. 利用反射注解设置值方式3.1 业务代码3.2 业务实体3.3 工具方法 1.场景 下载导入模版 2.普通实现方式 实现很简单&#xff0c;看着不那么优雅 GetMapping("/export-detail-template")Operation(summary "导出订单需求单明细…

Linux文件传输工具 scp 和 rsync 使用详解和优势对比

scp&#xff08;Secure Copy&#xff09;和rsync都是常用的命令行工具&#xff0c;用于在Linux系统中复制文件和目录。它们都可以通过SSH协议安全地传输数据&#xff0c;但各自有不同的特性和用途&#xff0c;下面我将详细介绍相关语法和使用案例 scp (Secure Copy) scp命令用…