IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter lDialog的使用 -> 正文阅读

[移动开发]Flutter lDialog的使用

SimpelDialog:

用于设置简单的提示信息,可以显示附加的提示或操作

属性表:

属性作用
title对话框标题
titlePadding标题间隔
titletextStyle标题文字样式
children子组件选项
contentPadding子选项间隔
backgroundColor对话框背景颜色
shap对话框形状
elevation对话框阴影
semanticLabel对话框语义标签,用来给读屏软件识别

子组件一般配合SimpleDialog选项使用,用于将组件包装,相当于textButton,文本是左对齐的,并且padding较小

实现代码如下:

?void main() => runApp(MyApp());
??
?class MyApp extends StatelessWidget
?{
??
? ?@override
? ?Widget build(BuildContext context) {
? ? ?return MaterialApp(
? ? ? ?title: "简单对话框",
? ? ? ?home: Scaffold(
? ? ? ? ?appBar: AppBar(
? ? ? ? ? ?title:const Text("简单对话框"),
? ? ? ?  ),
? ? ? ? ?body: Container(
? ? ? ? ? ?child: SimpleDialog(
? ? ? ? ? ? ?//列表标题
? ? ? ? ? ? ?title: const Text("对话框标题"),
? ? ? ? ? ? ?children: <Widget>[
? ? ? ? ? ? ? ?//列表项
? ? ? ? ? ? ? ?SimpleDialogOption(
? ? ? ? ? ? ? ? ?child: const Text("第一行信息"),
? ? ? ? ? ? ? ? ?//监听事件
? ? ? ? ? ? ? ? ?onPressed: (){},
? ? ? ? ? ? ?  ),
? ? ? ? ? ? ? ?SimpleDialogOption(
? ? ? ? ? ? ? ? ?child: const ?Text("第二行信息"),
? ? ? ? ? ? ? ? ?onPressed: (){},
? ? ? ? ? ? ?  )
? ? ? ? ? ?  ],
? ? ? ? ?  ),
? ? ? ?  ),
? ? ?  ),
? ?  );
?  }
?}
?

AlertDialog:

一般带有确定和取消的提示框

参数:

属性名类型说明
titleWidget对话框标题,通常是一个文本
actionList<Widget>对话框底部的操作按钮,比如确定、取消等
?AlertDialog(
? ?//标题
? ?title: const Text("提示"),
? ?//一个可滚动组件
? ?content: SingleChildScrollView(
? ? ?//ListBody是一个不常直接使用的控件,一般都会配合ListView或者Column等控件使用。ListBody的作用是按给定的轴方向,按照顺序排列子节点。,与listView相似
? ? ?child: ListBody(
? ? ? ?//列表
? ? ? ?children: const <Widget>[
? ? ? ? ?Text("是否要删除?"),
? ? ? ? ?Text("一旦删除数据不可恢复"),
? ? ?  ],
? ?  ),
?  ),
? ?//按钮选项
? ?actions: <Widget>[
? ? ?TextButton(onPressed: () {
? ? ? ?//关闭
? ? ? ?Navigator.of(context).pop();
? ?  }, child: const Text("取消")),
? ? ?TextButton(onPressed: () {
? ? ? ?//关闭并返回true
? ? ? ?Navigator.of(context).pop(true);
? ?  }, child: const Text("确定"))
?  ],
?);

和SimpleDialog基本一致,Navigator.of(context).pop();用来关闭弹窗,那么如何弹出弹窗呢?,只需要将Dialog嵌套在showDialog()中即可,showDialog()两个必要参数:

属性名类型说明
contextBuildContext上下文
builderWidgetBuilder对话框UI的创建方法
barrierDismissiblebool点击对话框barrier(遮罩)时是否关闭它

builder方法返回一个Future用于接收对话框选项的返回值,如果我们通过点击对话框外部退出,那么返回值为null,如果通过Navigator.of(context).pop(true)退出那么返回值为pop中传入的值。

完整代码:

?
void main() => runApp(MyApp());
??
?//RunApp不能直接接受StatefulWidget
?class MyApp extends StatelessWidget
?{
? ?@override
? ?Widget build(BuildContext context) {
? ? ?return MaterialApp(
? ? ? ?title: "对话框",
? ? ? ?home: Scaffold(
? ? ? ? ?appBar: AppBar(
? ? ? ? ? ?title: const Text("对话框"),
? ? ? ?  ),
? ? ? ? ?body: MyHome(),
? ? ?  ),
? ?  );
?  }
?}
??
?class MyHome extends StatefulWidget
?{
? ?@override
? ?Dialog createState() => Dialog();
?}
??
?class Dialog extends State<MyHome>{
? ?@override
? ?Widget build(BuildContext context) {
? ? ?return Center(
? ? ? ? ? ?//按钮的监听和子选是必须填的
? ? ? ? ? ?child: ElevatedButton(
? ? ? ? ? ? ?//async异步函数
? ? ? ? ? ? ?onPressed: () async {
? ? ? ? ? ? ? ?bool? delete = await showDeleteConfirmDialog(context);
? ? ? ? ? ? ? ?if(delete == null)
? ? ? ? ? ? ?  {
? ? ? ? ? ? ? ? ? ?print("取消删除");
? ? ? ? ? ? ?  }else
? ? ? ? ? ? ?  {
? ? ? ? ? ? ? ? ? ?print("确定删除");
? ? ? ? ? ? ?  }
? ? ? ? ? ?  },
? ? ? ? ? ? ?child: const Text("点击弹出对话框"),
? ? ? ? ?  )
? ? ? ?  );
?  }
?}
?Future<bool?> showDeleteConfirmDialog(BuildContext context) {
? ?return showDialog<bool>(
? ? ?context: context,
? ? ?builder: (context) {
? ? ? ?return AlertDialog(
? ? ? ? ?//标题
? ? ? ? ?title: const Text("提示"),
? ? ? ? ?//一个可滚动组件
? ? ? ? ?content: SingleChildScrollView(
? ? ? ? ? ?//ListBody是一个不常直接使用的控件,一般都会配合ListView或者Column等控件使用。ListBody的作用是按给定的轴方向,按照顺序排列子节点。,与listView相似
? ? ? ? ? ?child: ListBody(
? ? ? ? ? ? ?//列表
? ? ? ? ? ? ?children: const <Widget>[
? ? ? ? ? ? ? ?Text("是否要删除?"),
? ? ? ? ? ? ? ?Text("一旦删除数据不可恢复"),
? ? ? ? ? ?  ],
? ? ? ? ?  ),
? ? ? ?  ),
? ? ? ? ?//按钮选项
? ? ? ? ?actions: <Widget>[
? ? ? ? ? ?TextButton(onPressed: () {
? ? ? ? ? ? ?//关闭
? ? ? ? ? ? ?Navigator.of(context).pop();
? ? ? ? ?  }, child: const Text("取消")),
? ? ? ? ? ?TextButton(onPressed: () {
? ? ? ? ? ? ?//关闭并返回true
? ? ? ? ? ? ?Navigator.of(context).pop(true);
? ? ? ? ?  }, child: const Text("确定"))
? ? ? ?  ],
? ? ?  );
? ?  },
?  );
?}

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:24:56  更:2021-11-28 11:25:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:50:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码