Flutter提供了多种对话框组件供开发者使用,以下代码中演示了常见对话框的实现,供大家参考,欢迎大家复制粘贴和吐槽。

import 'package:flutter/material.dart';
// pubspec.yaml 中配置 fluttertoast: ^8.0.7
import 'package:fluttertoast/fluttertoast.dart'; void main() {runApp(MyApp());
}// 抽离成一个单独的组件
class MyApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(// 导航条appBar: AppBar(title: Text('Flutter各种对话框')),// 主体body: DialogPage(),),theme: ThemeData(primarySwatch: Colors.yellow));}
}class DialogPage extends StatefulWidget {DialogPage({Key key}) : super(key: key);_DialogPageState createState() => _DialogPageState();}class _DialogPageState extends State<DialogPage> {// 提示对话框_showToastDialog() {Fluttertoast.showToast(msg: "提示信息",toastLength: Toast.LENGTH_SHORT,gravity: ToastGravity.CENTER,timeInSecForIosWeb: 1,backgroundColor: Colors.black,textColor: Colors.white,fontSize: 16.0);}// 确认对话框_showAlertDialog() async {var result = await showDialog(// 表示点击灰色背景的时候是否消失弹出框barrierDismissible: false, context: context,builder: (context) {return AlertDialog(title: Text("提示信息"),content: Text("您确定要删除吗?"),actions: <Widget>[TextButton(child: Text("取消"),onPressed: () {print("取消");Navigator.pop(context, 'Cancle');},),TextButton(child: Text("确定"),onPressed: () {print("确定");Navigator.pop(context, "Ok");})]);});print(result);}// 选择对话框_showSelectDialog() async {var result = await showDialog(// 表示点击灰色背景的时候是否消失弹出框barrierDismissible: false, context: context,builder: (context) {return SimpleDialog(title: Text("选择内容"),children: <Widget>[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");},),Divider()]);});print(result);}// 底部弹出选择框_showActionSheetDialog() async {var result = await showModalBottomSheet(context: context,builder: (context) {return Container(height: 220,child: Column(children: <Widget>[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);}@overrideWidget build(BuildContext context) {return  Center(child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[ElevatedButton(child: Text('提示对话框'),onPressed: _showToastDialog,),SizedBox(height: 20),ElevatedButton(child: Text('确认对话框'),onPressed: _showAlertDialog,),SizedBox(height: 20),ElevatedButton(child: Text('选择对话框'),onPressed: _showSelectDialog,),SizedBox(height: 20),ElevatedButton(child: Text('底部弹出选择框'),onPressed: _showActionSheetDialog,)]));}
}

页面渲染效果如下,对话框的效果大家可自行点击查看。

Flutter中各种对话框的使用相关推荐

  1. Flutter 中获取地理位置[Flutter专题61]

    大家好,我是坚果,公众号"坚果前端" Flutter 中获取地理位置 如今,发现用户位置是移动应用程序非常常见且功能强大的用例.如果您曾经尝试过在 Android 中实现位置,您就 ...

  2. Flutter中管理路由栈的方法和应用

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_34396103/arti ...

  3. flutter中的路由跳转

    在前面的基本路由和命名路由中,都演示了如何进行路由跳转,并且在路由跳转以后,可以借用系统自带的按钮就行返回上一级,当然了,也可以自定义按钮返回上一级. 返回上一级 在前面的例子中,当从Home.dar ...

  4. flutter中的生命周期

    前言 和其他的视图框架比如android的Activity一样,flutter中的视图Widget也存在生命周期,生命周期的回调函数提现在了State上面.理解flutter的生命周期,对我们写出一个 ...

  5. 一招教会你处理Flutter中的数据

    目录传送门:<Flutter快速上手指南>先导篇 在一个 App 中,数据类是必不可少. 我们需要从接口请求数据(通常为 JSON 格式),然后解析成对象,再使用它. 看看在 Flutte ...

  6. 详解Linux交互式shell脚本中创建对话框实例教程

    详解Linux交互式shell脚本中创建对话框实例教程 本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一 ...

  7. flutter中的生命周期函数

    前言:生命周期是一个组件加载到卸载的整个周期,熟悉生命周期可以让我们在合适的时机做该做的事情, flutter中的State生命周期和android以及React Native的生命周期类似. 先看一 ...

  8. 在Flutter中嵌入Native组件的正确姿势

    引言 在漫长的从Native向Flutter过渡的混合工程时期,要想平滑地过渡,在Flutter中使用Native中较为完善的控件会是一个很好的选择.本文希望向大家介绍AndroidView的使用方式 ...

  9. GTK+重拾--08 GTK+中的对话框

    版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/50351564 (一):写在前面 在这一个小 ...

最新文章

  1. pybind11介绍
  2. struts的DevMode模式
  3. python if语句多个条件-python if条件判断语句
  4. MVC小型商务网站实例(2)--项目架构
  5. python安装linux软件_Linux之安装常用软件
  6. java的求和函数_Java Stream流之求和的实现
  7. 属于PHP语言结构的是,PHP语言结构
  8. leetcode93. 复原 IP 地址
  9. Web2.0网站性能调优实践(引用王宗义)
  10. C语言整型在计算机的储存
  11. 网络工程师Day4--实验3-1 配置ACL过滤企业数据
  12. Java 设计模式 之 观察者模式(Observer)
  13. 机器视觉知识汇总(持续更新)
  14. kindle3使用技巧
  15. 数据库--聚集函数及其应用
  16. RIGHT-BICEP测试第二次程序
  17. 中国人寿保费项目数据集
  18. 苹果,Inter,AMD
  19. Python全栈[第二篇]:计算机基础知识-进制
  20. 安卓设置keychain_简单实现KeyChain实例

热门文章

  1. java readfile函数_从fs.readFile获取数据
  2. Docker安装ElasticSerach、ElasticSerachhead、IK分词器及Kibanna步骤(亲测能用)
  3. DZ论坛克米模板3.5版全解密+完整插件/教程
  4. 社会最底层的人,如何突破人生圈层,改变命运?
  5. Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。
  6. 触发器相关概念与应用
  7. android 国际化方案 简书,国际化
  8. 【C++实验一】 实现CMatrix类
  9. 操作系统之避免死锁的方法
  10. Date相关日期格式转换