80 lines
2.3 KiB
Dart
80 lines
2.3 KiB
Dart
|
import 'package:flutter/material.dart';
|
||
|
|
||
|
class Dialogs {
|
||
|
static void showCancelConfirmationDialog(
|
||
|
{required BuildContext context,
|
||
|
required bool isNew,
|
||
|
required void Function() onSave,
|
||
|
String? message,
|
||
|
void Function(BuildContext context)? onDiscard}) {
|
||
|
showDialog(
|
||
|
context: context,
|
||
|
builder: (BuildContext context) {
|
||
|
List<Widget> actions = [
|
||
|
TextButton(
|
||
|
onPressed: () => Navigator.pop(context, 'CANCEL'),
|
||
|
child: const Text('CANCEL'),
|
||
|
),
|
||
|
];
|
||
|
|
||
|
actions.add(isNew
|
||
|
? ElevatedButton(
|
||
|
onPressed: () => Navigator.pop(context, 'DISCARD'),
|
||
|
child: const Text('DISCARD'),
|
||
|
)
|
||
|
: TextButton(
|
||
|
onPressed: () => Navigator.pop(context, 'DISCARD'),
|
||
|
child: const Text('DISCARD'),
|
||
|
));
|
||
|
|
||
|
if (!isNew) {
|
||
|
actions.add(ElevatedButton(
|
||
|
onPressed: () => Navigator.pop(context, 'SAVE'),
|
||
|
child: const Text('SAVE'),
|
||
|
));
|
||
|
}
|
||
|
|
||
|
return AlertDialog(
|
||
|
content: Text(message ??
|
||
|
'You already made some changes. Discard your input?'),
|
||
|
actions: actions,
|
||
|
);
|
||
|
}).then((value) {
|
||
|
if (value == 'DISCARD') {
|
||
|
onDiscard != null ? onDiscard(context) : Navigator.pop(context);
|
||
|
}
|
||
|
if (value == 'SAVE') {
|
||
|
onSave();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
static void showConfirmationDialog(
|
||
|
{required BuildContext context,
|
||
|
required void Function() onConfirm,
|
||
|
String message = 'Are you sure you want to delete this record?',
|
||
|
String confirmationLabel = 'DELETE'}) {
|
||
|
showDialog(
|
||
|
context: context,
|
||
|
builder: (BuildContext context) {
|
||
|
return AlertDialog(
|
||
|
content: Text(message),
|
||
|
actions: <Widget>[
|
||
|
TextButton(
|
||
|
onPressed: () => Navigator.pop(context, 'CANCEL'),
|
||
|
child: const Text('CANCEL'),
|
||
|
),
|
||
|
ElevatedButton(
|
||
|
onPressed: () => Navigator.pop(context, 'CONFIRM'),
|
||
|
child: Text(confirmationLabel),
|
||
|
),
|
||
|
],
|
||
|
);
|
||
|
}).then((value) {
|
||
|
if (value == 'CONFIRM') {
|
||
|
onConfirm();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|