diameter/lib/utils/dialog_utils.dart

81 lines
2.7 KiB
Dart
Raw Normal View History

import 'package:diameter/localization_keys.dart';
2021-10-22 23:08:09 +00:00
import 'package:flutter/material.dart';
import 'package:flutter_translate/flutter_translate.dart';
2021-10-22 23:08:09 +00:00
2022-03-21 00:07:29 +00:00
class DialogUtils {
2021-10-22 23:08:09 +00:00
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: Text(translate(LocalizationKeys.general_cancel).toUpperCase()),
2021-10-22 23:08:09 +00:00
),
];
actions.add(isNew
? ElevatedButton(
onPressed: () => Navigator.pop(context, 'DISCARD'),
child: Text(translate(LocalizationKeys.general_discard).toUpperCase()),
2021-10-22 23:08:09 +00:00
)
: TextButton(
onPressed: () => Navigator.pop(context, 'DISCARD'),
child: Text(translate(LocalizationKeys.general_discard).toUpperCase()),
2021-10-22 23:08:09 +00:00
));
if (!isNew) {
actions.add(ElevatedButton(
onPressed: () => Navigator.pop(context, 'SAVE'),
child: Text(translate(LocalizationKeys.general_save).toUpperCase()),
2021-10-22 23:08:09 +00:00
));
}
return AlertDialog(
content: Text(message ?? translate(LocalizationKeys.general_confirmDiscard)),
2021-10-22 23:08:09 +00:00
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,
String? confirmationLabel}) {
2021-10-22 23:08:09 +00:00
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
content: Text(message ?? translate(LocalizationKeys.general_confirmDelete)),
2021-10-22 23:08:09 +00:00
actions: <Widget>[
TextButton(
onPressed: () => Navigator.pop(context, 'CANCEL'),
child: Text(translate(LocalizationKeys.general_cancel).toUpperCase()),
2021-10-22 23:08:09 +00:00
),
ElevatedButton(
onPressed: () => Navigator.pop(context, 'CONFIRM'),
child: Text(confirmationLabel ?? translate(LocalizationKeys.general_confirm).toUpperCase()),
2021-10-22 23:08:09 +00:00
),
],
);
}).then((value) {
if (value == 'CONFIRM') {
onConfirm();
}
});
}
}