diff --git a/assets/langs/en.yaml b/assets/langs/en.yaml index 36e7f84b..33bd48e7 100644 --- a/assets/langs/en.yaml +++ b/assets/langs/en.yaml @@ -222,7 +222,10 @@ widgets: sortingOptions: Sorting Options viewOptions: View Options searchFailed: No Search Results Found - + NoteDeleteDialog: + title: Do you want to delete this note? + yes: Delete + no: No rootFolder: Root Folder ignoredFiles: diff --git a/lib/screens/note_editor.dart b/lib/screens/note_editor.dart index 45d3a9c3..95ece907 100644 --- a/lib/screens/note_editor.dart +++ b/lib/screens/note_editor.dart @@ -20,6 +20,7 @@ import 'package:gitjournal/state_container.dart'; import 'package:gitjournal/utils.dart'; import 'package:gitjournal/utils/logger.dart'; import 'package:gitjournal/widgets/folder_selection_dialog.dart'; +import 'package:gitjournal/widgets/note_delete_dialog.dart'; import 'package:gitjournal/widgets/note_editor_selector.dart'; import 'package:gitjournal/widgets/note_tag_editor.dart'; import 'package:gitjournal/widgets/rename_dialog.dart'; @@ -256,13 +257,25 @@ class NoteEditorState extends State { } } - void _noteDeletionSelected(Note note) { + void _noteDeletionSelected(Note note) async { if (_isNewNote && !_noteModified(note)) { Navigator.pop(context); return; } - showDialog(context: context, builder: _buildAlertDialog); + var shouldDelete = await showDialog( + context: context, + builder: (context) => NoteDeleteDialog(), + ); + if (shouldDelete == true) { + _deleteNote(note); + + if (_isNewNote) { + Navigator.pop(context); // Note Editor + } else { + Navigator.pop(context, ShowUndoSnackbar()); // Note Editor + } + } } void _deleteNote(Note note) { @@ -274,32 +287,6 @@ class NoteEditorState extends State { stateContainer.removeNote(note); } - Widget _buildAlertDialog(BuildContext context) { - return AlertDialog( - title: const Text('Do you want to delete this note?'), - actions: [ - FlatButton( - onPressed: () => Navigator.of(context).pop(false), - child: const Text('Keep Writing'), - ), - FlatButton( - onPressed: () { - _deleteNote(note); - - Navigator.pop(context); // Alert box - - if (_isNewNote) { - Navigator.pop(context); // Note Editor - } else { - Navigator.pop(context, ShowUndoSnackbar()); // Note Editor - } - }, - child: const Text('Delete'), - ), - ], - ); - } - bool _noteModified(Note note) { if (_isNewNote) { return note.title.isNotEmpty || note.body.isNotEmpty; diff --git a/lib/widgets/note_delete_dialog.dart b/lib/widgets/note_delete_dialog.dart new file mode 100644 index 00000000..88e037fa --- /dev/null +++ b/lib/widgets/note_delete_dialog.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; + +import 'package:easy_localization/easy_localization.dart'; + +class NoteDeleteDialog extends StatelessWidget { + @override + Widget build(BuildContext context) { + return AlertDialog( + title: Text(tr('widgets.NoteDeleteDialog.title')), + actions: [ + FlatButton( + onPressed: () => Navigator.of(context).pop(false), + child: Text(tr('widgets.NoteDeleteDialog.no')), + ), + FlatButton( + onPressed: () => Navigator.of(context).pop(true), + child: Text(tr('widgets.NoteDeleteDialog.yes')), + ), + ], + ); + } +}