openDialog method
Future
openDialog({
- TransitionDialog? transition,
- String? title,
- String? content,
- String? cancel,
- String? next,
- List<
Widget> ? actions, - VoidCallback? onCancel,
- VoidCallback? onNext,
open dialog with just lines of code dialog take a few optional params and TransitionDialog type
Implementation
Future openDialog(
{TransitionDialog? transition,
String? title,
String? content,
String? cancel,
String? next,
List<Widget>? actions,
VoidCallback? onCancel,
VoidCallback? onNext}) async {
switch (transition) {
case TransitionDialog.rotate:
return showGeneralDialog<void>(
context: this,
pageBuilder: (ctx, a1, a2) {
return Container();
},
transitionBuilder: (ctx, a1, a2, child) {
return Transform.rotate(
angle: math.radians(a1.value * 360),
child: _dialog(ctx,
title: title,
content: content,
cancel: cancel,
next: next,
actions: actions,
onCancel: onCancel,
onNext: onNext),
);
},
transitionDuration: const Duration(milliseconds: 400),
);
case TransitionDialog.scale:
return showGeneralDialog<void>(
context: this,
pageBuilder: (ctx, a1, a2) {
return Container();
},
transitionBuilder: (ctx, a1, a2, child) {
var curve = Curves.easeInOut.transform(a1.value);
return Transform.scale(
scale: curve,
child: _dialog(ctx,
title: title,
content: content,
cancel: cancel,
next: next,
actions: actions,
onCancel: onCancel,
onNext: onNext),
);
},
transitionDuration: const Duration(milliseconds: 400),
);
case TransitionDialog.right:
return showGeneralDialog<void>(
context: this,
pageBuilder: (ctx, a1, a2) {
return Container();
},
transitionDuration: const Duration(milliseconds: 400),
transitionBuilder: (ctx, a1, a2, child) {
return SlideTransition(
transformHitTests: false,
position: Tween<Offset>(
begin: const Offset(1.0, 0.0),
end: Offset.zero,
).chain(CurveTween(curve: Curves.bounceIn)).animate(a1),
child: _dialog(ctx,
title: title,
content: content,
cancel: cancel,
next: next,
actions: actions,
onCancel: onCancel,
onNext: onNext),
);
},
);
case TransitionDialog.left:
return showGeneralDialog<void>(
context: this,
pageBuilder: (ctx, a1, a2) {
return Container();
},
transitionDuration: const Duration(milliseconds: 400),
transitionBuilder: (ctx, a1, a2, child) {
return SlideTransition(
transformHitTests: false,
position: Tween<Offset>(
begin: const Offset(-1.0, 0.0),
end: Offset.zero,
).chain(CurveTween(curve: Curves.bounceIn)).animate(a1),
child: _dialog(ctx,
title: title,
content: content,
cancel: cancel,
next: next,
actions: actions,
onCancel: onCancel,
onNext: onNext),
);
},
);
case TransitionDialog.downToUp:
return showGeneralDialog<void>(
context: this,
pageBuilder: (ctx, a1, a2) {
return Container();
},
transitionDuration: const Duration(milliseconds: 400),
transitionBuilder: (ctx, a1, a2, child) {
return SlideTransition(
transformHitTests: false,
position: Tween<Offset>(
begin: const Offset(0.0, 1.0),
end: Offset.zero,
).chain(CurveTween(curve: Curves.bounceIn)).animate(a1),
child: _dialog(ctx,
title: title,
content: content,
cancel: cancel,
next: next,
actions: actions,
onCancel: onCancel,
onNext: onNext),
);
},
);
case TransitionDialog.topToDown:
return showGeneralDialog<void>(
context: this,
pageBuilder: (ctx, a1, a2) {
return Container();
},
transitionDuration: const Duration(milliseconds: 400),
transitionBuilder: (ctx, a1, a2, child) {
return SlideTransition(
transformHitTests: false,
position: Tween<Offset>(
begin: const Offset(0.0, -1.0),
end: Offset.zero,
).chain(CurveTween(curve: Curves.bounceIn)).animate(a1),
child: _dialog(ctx,
title: title,
content: content,
cancel: cancel,
next: next,
actions: actions,
onCancel: onCancel,
onNext: onNext),
);
},
);
default:
return showDialog<void>(
context: this,
barrierDismissible: false, // user must tap button!
builder: (BuildContext context) {
return AlertDialog(
title: Text(title ?? 'AlertDialog Title'),
content: Text(content ?? "Simple Dialog content"),
actions: <Widget>[
TextButton(
onPressed: onCancel ?? () => back(),
child: Text(cancel ?? 'cancel'),
),
TextButton(
onPressed: onNext ?? () => back(),
child: Text(next ?? 'Approve'),
),
],
);
},
);
}
}