自定义一个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,
),
],
);
},
);
}
}