import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; enum OkCancelResult { ok, cancel } Future showOkCancelAlertDialog({ required BuildContext context, required String title, String? message, String? okLabel, String? cancelLabel, bool isDestructive = false, bool useRootNavigator = true, }) => showAdaptiveDialog( context: context, useRootNavigator: useRootNavigator, builder: (context) => AlertDialog.adaptive( title: ConstrainedBox( constraints: const BoxConstraints(maxWidth: 256), child: Text(title), ), content: ConstrainedBox( constraints: const BoxConstraints(maxWidth: 256), child: message == null ? null : Text(message), ), actions: [ AdaptiveDialogAction( onPressed: () => Navigator.of(context) .pop(OkCancelResult.cancel), child: Text(cancelLabel ?? L10n.of(context).cancel), ), AdaptiveDialogAction( onPressed: () => Navigator.of(context).pop(OkCancelResult.ok), child: Text( okLabel ?? L10n.of(context).ok, style: isDestructive ? TextStyle(color: Theme.of(context).colorScheme.error) : null, ), ), ], ), ); Future showOkAlertDialog({ required BuildContext context, required String title, String? message, String? okLabel, bool useRootNavigator = true, }) => showAdaptiveDialog( context: context, useRootNavigator: useRootNavigator, builder: (context) => AlertDialog.adaptive( title: ConstrainedBox( constraints: const BoxConstraints(maxWidth: 256), child: Text(title), ), content: ConstrainedBox( constraints: const BoxConstraints(maxWidth: 256), child: message == null ? null : Text(message), ), actions: [ AdaptiveDialogAction( onPressed: () => Navigator.of(context).pop(OkCancelResult.ok), child: Text(okLabel ?? L10n.of(context).close), ), ], ), );