使用方式
showDialog( barrierDismissible: false, barrierColor: Colors.transparent, context: context, builder: (BuildContext context) { return Center( child:Container( width: 80,height: 80, child:CircularProgressIndicator( strokeWidth: 3.0, backgroundColor: Colors.blue, valueColor: new AlwaysStoppedAnimation<Color>(Colors.red), ), ) ); });
FadeRoute类的实现
import 'package:flutter/material.dart'; class FadeRoute extends PageRoute { FadeRoute({ @required this.pageBuilder, this.transitionDuration = const Duration(milliseconds: 300), this.opaque = true, this.barrierDismissible = false, this.barrierColor, this.barrierLabel, this.maintainState = true, }); final WidgetBuilder pageBuilder; @override final Duration transitionDuration; @override final bool opaque; @override final bool barrierDismissible; @override final Color barrierColor; @override final String barrierLabel; @override final bool maintainState; @override Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) => pageBuilder(context); @override Widget buildTransitions(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child) { return FadeTransition( opacity: animation, child: pageBuilder(context), ); } }
第一段代码showDialog中的builder可以通过
自定义组件来抽出来,订制各种风格
移除loading的方法
Navigator.maybePop(context);