diff --git a/lib/screens/note_editor_screen.dart b/lib/screens/note_editor_screen.dart index 658a81b..87be3b5 100644 --- a/lib/screens/note_editor_screen.dart +++ b/lib/screens/note_editor_screen.dart @@ -345,6 +345,142 @@ class _NoteEditorScreenState extends State { } } + Widget _buildEditorContent({required bool isMobile}) { + final double titleSpacing = isMobile ? 16.0 : 8.0; + + return Column( + children: [ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 12, + ), + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + color: Colors.white12, + width: 1, + ), + ), + ), + child: Row( + children: [ + IconButton( + onPressed: _closeWithoutSaving, + icon: const Icon( + Icons.close, + color: Colors.white70, + ), + tooltip: 'Cerrar sin guardar', + ), + const SizedBox(width: 8), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + 'Creado: ${_formatDate(_currentNote.createdAt)}', + style: const TextStyle( + color: Colors.white54, + fontSize: 12, + ), + ), + if (_currentNote.updatedAt != _currentNote.createdAt) + Text( + 'Modificado: ${_formatDate(_currentNote.updatedAt)}', + style: const TextStyle( + color: Colors.white54, + fontSize: 12, + ), + ), + ], + ), + ), + ], + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextField( + controller: _titleController, + style: const TextStyle( + color: Colors.white, + fontSize: 28, + fontWeight: FontWeight.bold, + ), + decoration: const InputDecoration( + hintText: 'Título', + hintStyle: TextStyle(color: Colors.white30), + border: InputBorder.none, + contentPadding: EdgeInsets.zero, + ), + ), + SizedBox(height: titleSpacing), + Expanded( + child: TextField( + controller: _bodyController, + keyboardType: TextInputType.multiline, + maxLines: null, + expands: true, + style: const TextStyle( + color: Colors.white, + fontSize: 16, + height: 1.6, + ), + decoration: const InputDecoration( + hintText: 'Escribe tu nota...', + hintStyle: TextStyle( + color: Colors.white30, + ), + border: InputBorder.none, + contentPadding: EdgeInsets.zero, + ), + ), + ), + ], + ), + ), + ), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 12, + ), + decoration: BoxDecoration( + border: Border( + top: BorderSide(color: Colors.white12, width: 1), + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + if (!_isNewNote) + IconButton( + onPressed: _deleteNote, + icon: const Icon( + Icons.delete_outline, + color: Colors.red, + ), + tooltip: 'Eliminar nota', + ) + else + const SizedBox(width: 48), + FilledButton( + onPressed: _saveNote, + child: const Text('Guardar'), + ), + ], + ), + ), + ], + ); + } + @override Widget build(BuildContext context) { if (_isMobileLayout) { @@ -353,130 +489,7 @@ class _NoteEditorScreenState extends State { child: SafeArea( child: Container( color: const Color.fromARGB(255, 24, 25, 26), - child: Column( - children: [ - Container( - padding: const EdgeInsets.symmetric( - horizontal: 16, - vertical: 12, - ), - decoration: BoxDecoration( - border: Border( - bottom: BorderSide(color: Colors.white12, width: 1), - ), - ), - child: Row( - children: [ - IconButton( - onPressed: _closeWithoutSaving, - icon: const Icon(Icons.close, color: Colors.white70), - tooltip: 'Cerrar sin guardar', - ), - const SizedBox(width: 8), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - 'Creado: ${_formatDate(_currentNote.createdAt)}', - style: const TextStyle( - color: Colors.white54, - fontSize: 12, - ), - ), - if (_currentNote.updatedAt != - _currentNote.createdAt) - Text( - 'Modificado: ${_formatDate(_currentNote.updatedAt)}', - style: const TextStyle( - color: Colors.white54, - fontSize: 12, - ), - ), - ], - ), - ), - ], - ), - ), - Expanded( - child: Padding( - padding: const EdgeInsets.all(20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TextField( - controller: _titleController, - style: const TextStyle( - color: Colors.white, - fontSize: 28, - fontWeight: FontWeight.bold, - ), - decoration: const InputDecoration( - hintText: 'Título', - hintStyle: TextStyle(color: Colors.white30), - border: InputBorder.none, - contentPadding: EdgeInsets.zero, - ), - ), - const SizedBox(height: 16), - Expanded( - child: TextField( - controller: _bodyController, - keyboardType: TextInputType.multiline, - maxLines: null, - expands: true, - style: const TextStyle( - color: Colors.white, - fontSize: 16, - height: 1.6, - ), - decoration: const InputDecoration( - hintText: 'Escribe tu nota...', - hintStyle: TextStyle(color: Colors.white30), - border: InputBorder.none, - contentPadding: EdgeInsets.zero, - ), - ), - ), - ], - ), - ), - ), - Container( - padding: const EdgeInsets.symmetric( - horizontal: 16, - vertical: 12, - ), - decoration: BoxDecoration( - border: Border( - top: BorderSide(color: Colors.white12, width: 1), - ), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - if (!_isNewNote) - IconButton( - onPressed: _deleteNote, - icon: const Icon( - Icons.delete_outline, - color: Colors.red, - ), - tooltip: 'Eliminar nota', - ) - else - const SizedBox(width: 48), - FilledButton( - onPressed: _saveNote, - child: const Text('Guardar'), - ), - ], - ), - ), - ], - ), + child: _buildEditorContent(isMobile: true), ), ), ); @@ -507,139 +520,7 @@ class _NoteEditorScreenState extends State { side: BorderSide(color: Colors.white24, width: 1), ), clipBehavior: Clip.antiAlias, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - padding: const EdgeInsets.symmetric( - horizontal: 16, - vertical: 12, - ), - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - color: Colors.white12, - width: 1, - ), - ), - ), - child: Row( - children: [ - IconButton( - onPressed: _closeWithoutSaving, - icon: const Icon( - Icons.close, - color: Colors.white70, - ), - tooltip: 'Cerrar sin guardar', - ), - const SizedBox(width: 8), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - Text( - 'Creado: ${_formatDate(_currentNote.createdAt)}', - style: const TextStyle( - color: Colors.white54, - fontSize: 12, - ), - ), - if (_currentNote.updatedAt != - _currentNote.createdAt) - Text( - 'Modificado: ${_formatDate(_currentNote.updatedAt)}', - style: const TextStyle( - color: Colors.white54, - fontSize: 12, - ), - ), - ], - ), - ), - ], - ), - ), - Expanded( - child: Padding( - padding: const EdgeInsets.all(20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TextField( - controller: _titleController, - style: const TextStyle( - color: Colors.white, - fontSize: 28, - fontWeight: FontWeight.bold, - ), - decoration: const InputDecoration( - hintText: 'Título', - hintStyle: TextStyle(color: Colors.white30), - border: InputBorder.none, - contentPadding: EdgeInsets.zero, - ), - ), - const SizedBox(height: 8), - Expanded( - child: TextField( - controller: _bodyController, - keyboardType: TextInputType.multiline, - maxLines: null, - expands: true, - style: const TextStyle( - color: Colors.white, - fontSize: 16, - height: 1.6, - ), - decoration: const InputDecoration( - hintText: 'Escribe tu nota...', - hintStyle: TextStyle( - color: Colors.white30, - ), - border: InputBorder.none, - contentPadding: EdgeInsets.zero, - ), - ), - ), - ], - ), - ), - ), - Container( - padding: const EdgeInsets.symmetric( - horizontal: 16, - vertical: 12, - ), - decoration: BoxDecoration( - border: Border( - top: BorderSide(color: Colors.white12, width: 1), - ), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - if (!_isNewNote) - IconButton( - onPressed: _deleteNote, - icon: const Icon( - Icons.delete_outline, - color: Colors.red, - ), - tooltip: 'Eliminar nota', - ) - else - const SizedBox(width: 48), - FilledButton( - onPressed: _saveNote, - child: const Text('Guardar'), - ), - ], - ), - ), - ], - ), + child: _buildEditorContent(isMobile: false), ), ), ),