Flutter 自定义Dialog
2019-01-14 17:11
309 查看
今天分享一下Flutter的自定义的 loading diaolog。
先上效果图
不要在意UI、分享下大概思路😏
上代码
import 'package:flutter/material.dart'; // ignore: must_be_immutable class LoadingDialog extends Dialog { String loadingText; bool outsideDismiss; Function dismissCallback; LoadingDialog( {Key key, this.loadingText = "loading...", this.outsideDismiss = true, this.dismissCallback}) : super(key: key); @override Widget build(BuildContext context) { _dismissDialog() { if (dismissCallback != null) { dismissCallback(); } Navigator.of(context).pop(); } return new GestureDetector( onTap: outsideDismiss ? _dismissDialog : null, child: Material( type: MaterialType.transparency, child: new Center( child: new SizedBox( width: 120.0, height: 120.0, child: new Container( decoration: ShapeDecoration( color: Color(0xffffffff), shape: RoundedRectangleBorder( borderRadius: BorderRadius.all( Radius.circular(8.0), ), ), ), child: new Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: <Widget>[ new CircularProgressIndicator(), new Padding( padding: const EdgeInsets.only( top: 20.0, ), child: new Text( loadingText, style: new TextStyle(fontSize: 12.0), ), ), ], ), ), ), ), ), ); } }
这里主要是在最外层套了一个GestureDetector用于获取触摸事件,然后通过传参判断是否取消显示,最后在取消前调用 dismissCallback;
How to use
showLoadingDialog() { showDialog( context: context, barrierDismissible: true, builder: (BuildContext context) { return new LoadingDialog( dismissCallback: () { print("dismiss"); }, ); }); }
最后点击外层取消的时候就会在控制台输出dismiss了。
还有一个小问题,就是其实打开的Dialog已经是另外一个路由了,相当于已经跳转到了另外一个界面。
顺带推荐一波大佬录制的仿微信Flutter视频。
相关文章推荐
- android 自定义的dialog
- 自定义Dialog(图片,文字说明,单选按钮)----类ListPreference实现(2)
- Android对话框(二)进度条对话框ProgressDialog和自定义对话框CustomDialog
- 自定义底部显示并没有标题栏的Dialog
- 自定义dialog和截屏
- Android 基于Dialog的自定义Dialog
- 自定义Dialog
- Flutter自定义字体
- 2种自定义dialog实现自定义布局的思考
- android 自定义对话框 Dialog
- android 设置自定义dialog大小无效果
- 自定义Dialog点击弹框外的区域无法关闭问题
- Flutter进阶—使用自定义字体
- 创建没有黑色阴影的自定义dialog
- Android 自定义dialog的位置显示
- 20. android dialog——自定义对话框之一
- BeeFramework框架学习之一(自定义Dialog的学习)
- android自定义Dialog
- Android自定义通用的Dialog
- AlertDialog中使用自定义View,其中的Button如何设置点击事件监听