Flutter对话框

  • AlertDialog(确认对话框)
  • SimpleDialog(选择对话框)
  • showModalBottomSheet(底部弹出的对话框)
  • showToast(提示信息框)
  • 自定义对话框
  • 定时器

AlertDialog(确认对话框)

在actions中定义了两个按钮,分别为确定和取消, Navigator.pop(context, ‘Cancle’);是点击按钮后对话框退出,后面的参数为我们需要返回的值,用到了异步来获取返回的值

 _alertDialog() async {var result = await showDialog(context: context,builder: (context) {return AlertDialog(title: Text("提示信息"),content: Text("确定删除吗?"),actions: [TextButton(child: Text("取消"),onPressed: () {print("取消");Navigator.pop(context, 'Cancle');},),TextButton(child: Text("确定"),onPressed: () {print("确定");Navigator.pop(context, "Ok");})],);});print(result);}

SimpleDialog(选择对话框)

_simpleDialog() async {var redult = await showDialog(context: context,builder: (context) {return SimpleDialog(title: Text("选择内容"),children: [SimpleDialogOption(child: Text("Option A"),onPressed: () {print("Option A");Navigator.pop(context, "A");},),Divider(),SimpleDialogOption(child: Text("Option B"),onPressed: () {print("Option B");Navigator.pop(context, "B");},),Divider(),SimpleDialogOption(child: Text("Option C"),onPressed: () {print("Option C");Navigator.pop(context, "C");},)],);});print(redult);}

showModalBottomSheet(底部弹出的对话框)

  _modelBottomSheet() async {var result = await showModalBottomSheet(context: context,builder: (context) {return Container(height: 200,child: Column(children: [ListTile(title: Text("分享A"),onTap: () {Navigator.pop(context, "A");},),Divider(),ListTile(title: Text("分享B"),onTap: () {Navigator.pop(context, "B");},),Divider(),ListTile(title: Text("分享C"),onTap: () {Navigator.pop(context, "C");},),],),);},);print(result);}

showToast(提示信息框)

showToast我们选择的是第三方库进行实现

  1. 首先在https://pub.dev/中搜索toast,我们选择的是fluttertoast(比较新)

  2. 然后还是pubspec.yaml 中添加依赖

dependencies:fluttertoast: ^8.0.8

使用时在对应文件导包

import 'package:fluttertoast/fluttertoast.dart';
  1. 使用,可以将官方示例拿过来进行修改
  _toast(){Fluttertoast.showToast(msg: "提示信息",toastLength: Toast.LENGTH_SHORT,//提示信息的方位gravity: ToastGravity.BOTTOM,//这个属性只有在iOS上才有用timeInSecForIosWeb: 1,//背景颜色backgroundColor: Colors.black,textColor: Colors.white,fontSize: 16.0);}

上面几种对话框的完整代码

import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
class DialogPage extends StatefulWidget {DialogPage({Key? key}) : super(key: key);@override_DialogPageState createState() => _DialogPageState();
}class _DialogPageState extends State<DialogPage> {_alertDialog() async {var result = await showDialog(context: context,builder: (context) {return AlertDialog(title: Text("提示信息"),content: Text("确定删除吗?"),actions: [TextButton(child: Text("取消"),onPressed: () {print("取消");Navigator.pop(context, 'Cancle');},),TextButton(child: Text("确定"),onPressed: () {print("确定");Navigator.pop(context, "Ok");})],);});print(result);}_simpleDialog() async {var redult = await showDialog(context: context,builder: (context) {return SimpleDialog(title: Text("选择内容"),children: [SimpleDialogOption(child: Text("Option A"),onPressed: () {print("Option A");Navigator.pop(context, "A");},),Divider(),SimpleDialogOption(child: Text("Option B"),onPressed: () {print("Option B");Navigator.pop(context, "B");},),Divider(),SimpleDialogOption(child: Text("Option C"),onPressed: () {print("Option C");Navigator.pop(context, "C");},)],);});print(redult);}_modelBottomSheet() async {var result = await showModalBottomSheet(context: context,builder: (context) {return Container(height: 200,child: Column(children: [ListTile(title: Text("分享A"),onTap: () {Navigator.pop(context, "A");},),Divider(),ListTile(title: Text("分享B"),onTap: () {Navigator.pop(context, "B");},),Divider(),ListTile(title: Text("分享C"),onTap: () {Navigator.pop(context, "C");},),],),);},);print(result);}_toast(){Fluttertoast.showToast(msg: "提示信息",toastLength: Toast.LENGTH_SHORT,//提示信息的方位gravity: ToastGravity.BOTTOM,//这个属性只有在iOS上才有用timeInSecForIosWeb: 1,backgroundColor: Colors.black,textColor: Colors.white,fontSize: 16.0);}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Dialog"),),body: Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [ElevatedButton(onPressed: _alertDialog,child: Text("alert弹出框-AlertDialog"),),SizedBox(height: 20),ElevatedButton(onPressed: _simpleDialog,child: Text("select弹出框-SimpleDialog"),),SizedBox(height: 20),ElevatedButton(onPressed: _modelBottomSheet,child: Text("ActionSheet底部弹出框-showModalBottomSheet"),),SizedBox(height: 20),ElevatedButton(onPressed: _toast,child: Text("toast-fluttertoast第三方库"),),SizedBox(height: 20),],)),);}
}

自定义对话框

新建一个类继承 Dialog

// ignore_for_file: prefer_const_literals_to_create_immutables, prefer_const_constructorsimport 'package:flutter/material.dart';class MyDialog extends Dialog {String title;String content;MyDialog({this.title = "", this.content = ""});@overrideWidget build(BuildContext context) {// TODO: implement buildreturn Material(type: MaterialType.transparency,child: Center(child: Container(height: 300,width: 300,color: Colors.white,child: Column(children: [Padding(padding: EdgeInsets.all(10),child: Stack(children: [Align(alignment: Alignment.center,child: Text("$title"),),//这里是我们右上角×的返回Align(alignment: Alignment.centerRight,child: InkWell(child: Icon(Icons.close),onTap: () {Navigator.pop(context);},),)],),),Divider(),Container(padding: EdgeInsets.all(10),width: double.infinity,child: Text("$content",textAlign: TextAlign.left,),)],),)),);}
}

在按钮页面导入,在showDialog中返回我们自定义的对话框

ElevatedButton(onPressed: () {showDialog(context: context,builder: (context) {return MyDialog(title: "关于我们",content: "关于我们1111",);});},child: Text("toast-fluttertoast第三方库"),),

定时器

使用时要导入

import 'dart:async';

定时器使用的方法

  _showTimer(context) {var timer;timer = Timer.periodic(Duration(milliseconds: 5000), (t) {print("执行");Navigator.pop(context);t.cancel(); //取消定时器});}

然后再build中调用,达到定时器设置的时间对话框就会消失

 @overrideWidget build(BuildContext context) {_showTimer(context);}

Flutter对话框(AlertDialog,SimpleDialog,showModalBottomSheet,showToast)以及定时器相关推荐

  1. Flutter开发之SimpleDialog对话框组件-1(40)

    简单对话框组件在移动开发的交互中比较常用到,用于提示信息.警告.选择等功能.今天就学习一下简单的对话框组件SimpleDialog. 效果如图: 代码非常简单: import 'package:flu ...

  2. 【Android】对话框 AlertDialog

    [Android]对话框 AlertDialog 本讲介绍一下Android基本组件:对话框AlertDialog. 来源:http://blog.csdn.net/feng88724/article ...

  3. Flutter对话框

    AlertDialog const AlertDialog({Key key,this.title, //标题this.titlePadding, // 标题内边距this.titleTextStyl ...

  4. Android 中文 API ——对话框 AlertDialog.Builder

    2019独角兽企业重金招聘Python工程师标准>>> 刚开始接触android的时候,我在做一个自定义对话框的时候,也是通过继承的方式来实现,后来随着对文档了解的深入,发现了and ...

  5. Android详细的对话框AlertDialog.Builder使用方法

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  6. 024 Android 自定义样式对话框(AlertDialog)

    1.AlertDialog介绍 AlertDialog并不需要到布局文件中创建,而是在代码中通过构造器(AlertDialog.Builder)来构造标题.图标和按钮等内容的. 常规使用步骤(具体参见 ...

  7. Android.对话框(AlertDialog/Toast/Snackbar)

    1.资料: 1.1.Android提醒微技巧,你真的了解Dialog.Toast和Snackbar吗? - CSDN博客.html(https://blog.csdn.net/guolin_blog/ ...

  8. Flutter 底部弹框 showModalBottomSheet 使用Demo

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 文章底部扫码关注 [x2] ...

  9. 对话框AlertDialog的基本使用(新手)

    AlertDialog是点击某一组件时,本文用按钮举例,弹出一个对话框,供你选择接下来的操作. 基础用法 首先要给按钮设置点击事件,然后再onClick里构建 AlertDialog.Builder ...

最新文章

  1. 【摘录】GestureDector使用
  2. 面试官:会玩牌吧?给我讲讲洗牌算法和它的应用场景吧!
  3. python读文件代码-Python读取表格类型文件代码实例
  4. python中import与input_python : import详解。
  5. Qt QWidget实现手势缩放和平移(一)
  6. Delphi调用外部程序详解
  7. 上海嵌联自控供应车流量统计系统
  8. 中国微流体系统市场趋势报告、技术动态创新及市场预测
  9. 冒泡排序(Java)
  10. windows上用virtualbox运行mac虚拟机时怎样使用usb
  11. 头像 linux,头像制作大师下载-头像制作大师appv1.2.0-Linux公社
  12. 精准面试突击55:delete、drop、truncate有什么区别?
  13. vue + elementui table 列内容相同 自动合并单元格 完整代码
  14. 历年计算机一级笔试考试真题及答案解析,全国计算机等级考试上机考题全真笔试历年题...
  15. 计算机网络设备配置与调试体会,计算机网络设备配置与调试课程标准
  16. selenium+Java切换窗口句柄
  17. 使用微软官方工具下载安装Windows10系统
  18. 期货公司速度哪家强? 期货业掀起装备竞赛
  19. html图片长高如何设置,科学增高法,简单6个拉伸动作,两个月至少长高5厘米,...
  20. OpenGL:颜色索引模式的使用方式

热门文章

  1. Vue 3 + Vite + Eslint + prettier + husky + lint-staged 搭建基础项目
  2. logisim 快速加法器设计实验报告_数电课程实验一二
  3. 【数据结构与算法】之深入解析RSA加密算法的实现原理
  4. 10大热门的物联网初创公司
  5. Oracle数据库:排序order by语句,select from where order by的执行先后顺序,各种样例
  6. 每日一课 | 数据分析的本质是什么?
  7. 【稳定性day14】支付宝技术风险体系TRaaS——把风险去服务化、产品化
  8. 为什么IT行业工作那么火爆,仍然人才短缺
  9. 前置:API:DSP:核心交换机:边界网关协议:边界:(防御)防火墙:负载均衡:摆渡机:名词解释
  10. Possible solution: - Disable offline mode and rerun the build