import 'package:flutter/material.dart'; // void showSuccess(text) { // } class MyDialog { static void showDialog(context, text, {String title, bool isCancel = false, String submitText = '确认', OnTapHomeMenu onsubmit, OnTapHomeMenu oncancel}) { Navigator.of(context).push( PageRouteBuilder( opaque: false, transitionDuration: Duration(milliseconds: 300), transitionsBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) { return FadeTransition( opacity: CurvedAnimation(parent: animation, curve: Curves.linear), child: child, ); }, pageBuilder: (BuildContext context, _, __) { return LoadingDialog( title: title, text: text, submitText: submitText, cancel: isCancel, onsubmit: onsubmit, oncancel: oncancel); }, ), ); } } typedef OnTapHomeMenu = void Function(); // ignore: must_be_immutable class LoadingDialog extends Dialog { String title; String text; String submitText; bool cancel = false; OnTapHomeMenu onsubmit = () {}; OnTapHomeMenu oncancel = () {}; LoadingDialog( {Key key, @required this.text, this.cancel, this.onsubmit, this.oncancel, this.title, this.submitText}) : super(key: key); @override Widget build(BuildContext context) { return WillPopScope( child: Scaffold( backgroundColor: Color(0xCC000000), body: Container( child: SizedBox.expand( child: UnconstrainedBox( child: Container( width: 270, // padding: EdgeInsets.symmetric(horizontal: 20, vertical: 25), decoration: BoxDecoration( color: Color(0xFF15151D), border: Border.all(width: 1, color: Color(0xFFC2524D))), child: Stack( children: [ Padding( padding: EdgeInsets.symmetric(horizontal: 20, vertical: 25), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text(title ?? '提示', style: TextStyle( color: Colors.white, fontSize: 18, fontWeight: FontWeight.w600)), Container( height: 20, ), Text(text, style: TextStyle(color: Colors.white, fontSize: 14), textAlign: TextAlign.center), Container( height: 30, ), cancel ? Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Container( width: 100, child: RaisedButton( color: Color(0xFF3A3D5C), highlightColor: Color(0xFF3A3D5C).withOpacity(0.8), textColor: Colors.white, child: Text('取消'), onPressed: () { Navigator.of(context).pop(); oncancel(); }, ), ), Container( width: 100, child: RaisedButton( textColor: Colors.white, child: Text(submitText), onPressed: () { Navigator.of(context).pop(); onsubmit(); }, ), ) ], ) : Container( width: double.infinity, child: RaisedButton( textColor: Colors.white, child: Text(submitText), onPressed: () { Navigator.of(context).pop(); onsubmit(); }, ), ), Container( height: 5, ) ], ), ), Positioned( top: 0, left: 0, child: Image.asset( 'images/tancuang_shang.png', width: 131, ), ), Positioned( bottom: 0, right: 4, child: Image.asset( 'images/tancuang_xia.png', width: 148, ), ), ], ), ), ), ), ), ), onWillPop: () { return Future.value(false); }, ); } }