Flutter 自定义dialog工具类

自定义一个Loading等待Dialog工具类

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

/*
 * 自定义Loading等待弹框
 * @params text 提示内容
 */
class LoadingDialog extends Dialog {
  final String text;
  LoadingDialog({Key key, @required this.text}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return new Material(
      type: MaterialType.transparency,
      child: new Center(
        child: new SizedBox(
          width: 160.0,
          height: 160.0,
          child: new Container(
            decoration: ShapeDecoration(
              color: Color(0xcc1d1d26),
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.all(
                  Radius.circular(8.0),
                ),
              ),
            ),
            child: new Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: <Widget>[
                SizedBox(
                  width: 47,
                  height: 47,
                  child: CupertinoActivityIndicator(
                    radius: 20,
                  ),
                ),
                new Padding(
                  padding: const EdgeInsets.only(
                    top: 20.0,
                  ),
                  child: new Text(
                    text,
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 16,
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }

    //点击物理返回键可以消失
//  show(BuildContext context) {
//    showDialog(
//        context: context,
//        barrierDismissible: false,
//        builder: (BuildContext context) {
//          return LoadingDialog(
//            text: text,
//          );
//        });
//  }


  //屏蔽物理返回键
  show(BuildContext context) {
    showDialog(
        context: context,
        barrierDismissible: false,  //点击边框外不消失
        builder: (_)=>WillPopScope(
          child: LoadingDialog(text: text),
          onWillPop: ()async{
            return null;
          },
        ));
  }


  disMiss(BuildContext context) {
    Navigator.of(context).pop();
  }
}

1.使用方法

  LoadingDialog(text: 'Loading...').show(context);

效果:

   不好截图  还是算了    就是上面一个CupertinoActivityIndicator,下面一个提示文本 ,内容text可以自定义。

 


import 'package:author_aar/constant/MyConstant.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';


class CupertinoDialogUtil{

  /// 自定义 显示iOS风格的提示弹窗
  Future<Null> showCustomDialog(
      BuildContext context,
      String title,
      String text,
      String confirmTxt,
      GestureTapCallback onTap) async {
    return showCupertinoDialog<Null>(
      context: context,
      builder: (BuildContext  context) {
        return new CupertinoAlertDialog(
          title: Text(title,style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(34)),),
          content: Padding(
            padding: const EdgeInsets.only(top:12),
            child: new SingleChildScrollView(
              child: new ListBody(
                children: <Widget>[
                  new Text(text,style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(24)),),
                ],
              ),
            ),
          ),
          actions: <Widget>[
            CupertinoDialogAction(
              child:Container(
                width:double.infinity,
                height: ScreenUtil.getInstance().setHeight(77),
                margin: EdgeInsets.only(left: 10,right: 10),
                child: FlatButton(
                  onPressed: onTap,
                  child: Text('$confirmTxt',style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(26),color: Colors.white),),
                  color: MyConstant.titleBackColor,
                  shape: StadiumBorder(side: BorderSide.none,),
                ),
              ),
//              onPressed: onTap,
            ),
          ],
        );
      },
    );
  }






}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值