flutter弹框怎么封装_flutter的加载弹框
import 'package:flutter/cupertino.dart';import'package:flutter/material.dart';import'package:zhongfa_apps/services/ScreenAdapter.dart';///加载弹框classProgressDialog {static bool _isShowing = false;///展示
import 'package:flutter/cupertino.dart';
import'package:flutter/material.dart';
import'package:zhongfa_apps/services/ScreenAdapter.dart';///加载弹框
classProgressDialog {static bool _isShowing = false;///展示 {Widget child = const CircularProgressIndicator(valueColor: AlwaysStoppedAnimation(Colors.red),)}
static voidshowProgress(BuildContext context) {if (!_isShowing) {
_isShowing= true;
Navigator.push(
context,
_PopRoute(
child: _Progress(
child:newPadding(
padding:const EdgeInsets.all(12.0),
child:newCenter(//保证控件居中效果
child: newSizedBox(
width:120.0,
height:120.0,
child:newContainer(
decoration: ShapeDecoration(
color: Colors.black54,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(8.0),
),
),
),
child:newColumn(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children:[newCircularProgressIndicator(
backgroundColor: Colors.white,
strokeWidth:4.0,
valueColor:newAlwaysStoppedAnimation(Colors.black38),
),newPadding(
padding:constEdgeInsets.only(
top:20.0,
),
child:newText("加载中...",
style:newTextStyle(
fontSize: ScreenAdapter.size(32),
color: Colors.white),
),
),
],
),
),
),
),
),
),
),
);
}
}///隐藏
static voidhideProgress(BuildContext context) {if(_isShowing) {
Navigator.of(context).pop();
_isShowing= false;
}
}
}///Widget
class_Progress extends StatelessWidget {
final Widget child;
_Progress({
Key key,
@requiredthis.child,
}) : assert(child!= null),
super(key: key);
@override
Widget build(BuildContext context) {returnMaterial(
color: Colors.transparent,
child: Center(
child: child,
));
}
}///Route
class_PopRoute extends PopupRoute {
final Duration _duration= Duration(milliseconds: 300);
Widget child;
_PopRoute({@requiredthis.child});
@override
Colorget barrierColor => null;
@overridebool get barrierDismissible => true;
@override
Stringget barrierLabel => null;
@override
Widget buildPage(BuildContext context, Animationanimation,
AnimationsecondaryAnimation) {returnchild;
}
@override
Durationget transitionDuration =>_duration;
}
更多推荐

所有评论(0)