import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
///加载弹框
class ProgressDialog {
static bool _isShowing = false;
///展示 {Widget child = const CircularProgressIndicator(valueColor: AlwaysStoppedAnimation(Colors.red),)}
static void showProgress(BuildContext context) {
_isShowing = false;
if (!_isShowing) {
_isShowing = true;
Navigator.push(
context,
_PopRoute(
child: _Progress(
child: new Padding(
padding: const EdgeInsets.all(12.0),
child: new Center(
//保证控件居中效果
child: new SizedBox(
width: 120.0,
height: 120.0,
child: new Container(
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(8.0),
),
),
),
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
new CircularProgressIndicator(
backgroundColor: Colors.white,
strokeWidth: 4.0,
valueColor:
new AlwaysStoppedAnimation(Colors.grey),
),
new Padding(
padding: const EdgeInsets.only(
top: 20.0,
),
child: new Text(
"加载中...",
style: new TextStyle(
fontSize: 22,
color: Colors.grey),
),
),
],
),
),
),
),
),
),
),
);
}
}
///隐藏
static void hideProgress(BuildContext context) {
if (_isShowing) {
Navigator.of(context).pop();
_isShowing = false;
}
}
}
///Widget
class _Progress extends StatelessWidget {
final Widget child;
_Progress({
Key key,
@required this.child,
}) : assert(child != null),
super(key: key);
@override
Widget build(BuildContext context) {
return Material(
color: Colors.transparent,
child: Center(
child: child,
));
}
}
///Route
class _PopRoute extends PopupRoute {
final Duration _duration = Duration(milliseconds: 300);
Widget child;
_PopRoute({@required this.child});
@override
Color get barrierColor => Colors.black54;
@override
bool get barrierDismissible => true;
@override
String get barrierLabel => null;
@override
Widget buildPage(BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation) {
return child;
}
@override
Duration get transitionDuration => _duration;
}
版权声明:本文为qq_30173273原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。