Editors: Remove code duplication

This commit is contained in:
Vishesh Handa
2020-07-28 15:37:31 +02:00
parent 1c7b0d09ef
commit 15b978cacb
3 changed files with 34 additions and 64 deletions

View File

@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
import 'package:gitjournal/core/note.dart'; import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/editors/common.dart'; import 'package:gitjournal/editors/common.dart';
import 'package:gitjournal/editors/disposable_change_notifier.dart'; import 'package:gitjournal/editors/disposable_change_notifier.dart';
import 'package:gitjournal/editors/note_body_editor.dart';
import 'package:gitjournal/widgets/editor_scroll_view.dart'; import 'package:gitjournal/widgets/editor_scroll_view.dart';
import 'package:gitjournal/widgets/journal_editor_header.dart'; import 'package:gitjournal/widgets/journal_editor_header.dart';
@ -89,7 +90,7 @@ class JournalEditorState extends State<JournalEditor>
child: Column( child: Column(
children: <Widget>[ children: <Widget>[
JournalEditorHeader(note), JournalEditorHeader(note),
_NoteBodyEditor( NoteBodyEditor(
textController: _textController, textController: _textController,
autofocus: widget.isNewNote, autofocus: widget.isNewNote,
onChanged: _noteTextChanged, onChanged: _noteTextChanged,
@ -142,32 +143,3 @@ class JournalEditorState extends State<JournalEditor>
@override @override
bool get noteModified => _noteModified; bool get noteModified => _noteModified;
} }
class _NoteBodyEditor extends StatelessWidget {
final TextEditingController textController;
final bool autofocus;
final Function onChanged;
_NoteBodyEditor({this.textController, this.autofocus, this.onChanged});
@override
Widget build(BuildContext context) {
var style = Theme.of(context).textTheme.subtitle1;
return TextField(
autofocus: autofocus,
keyboardType: TextInputType.multiline,
maxLines: null,
style: style,
decoration: const InputDecoration(
hintText: 'Write here',
border: InputBorder.none,
isDense: true,
),
controller: textController,
textCapitalization: TextCapitalization.sentences,
scrollPadding: const EdgeInsets.all(0.0),
onChanged: (_) => onChanged(),
);
}
}

View File

@ -6,6 +6,7 @@ import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/editors/common.dart'; import 'package:gitjournal/editors/common.dart';
import 'package:gitjournal/editors/disposable_change_notifier.dart'; import 'package:gitjournal/editors/disposable_change_notifier.dart';
import 'package:gitjournal/editors/heuristics.dart'; import 'package:gitjournal/editors/heuristics.dart';
import 'package:gitjournal/editors/note_body_editor.dart';
import 'package:gitjournal/editors/note_title_editor.dart'; import 'package:gitjournal/editors/note_title_editor.dart';
import 'package:gitjournal/error_reporting.dart'; import 'package:gitjournal/error_reporting.dart';
import 'package:gitjournal/settings.dart'; import 'package:gitjournal/settings.dart';
@ -118,7 +119,7 @@ class MarkdownEditorState extends State<MarkdownEditor>
_titleTextController, _titleTextController,
_noteTextChanged, _noteTextChanged,
), ),
_NoteBodyEditor( NoteBodyEditor(
textController: _textController, textController: _textController,
autofocus: widget.isNewNote, autofocus: widget.isNewNote,
onChanged: _noteTextChanged, onChanged: _noteTextChanged,
@ -227,36 +228,3 @@ class MarkdownEditorState extends State<MarkdownEditor>
@override @override
bool get noteModified => _noteModified; bool get noteModified => _noteModified;
} }
class _NoteBodyEditor extends StatelessWidget {
final TextEditingController textController;
final bool autofocus;
final Function onChanged;
_NoteBodyEditor({
@required this.textController,
@required this.autofocus,
@required this.onChanged,
});
@override
Widget build(BuildContext context) {
var style = Theme.of(context).textTheme.subtitle1;
return TextField(
autofocus: autofocus,
keyboardType: TextInputType.multiline,
maxLines: null,
style: style,
decoration: const InputDecoration(
hintText: 'Write here',
border: InputBorder.none,
isDense: true,
),
controller: textController,
textCapitalization: TextCapitalization.sentences,
scrollPadding: const EdgeInsets.all(0.0),
onChanged: (_) => onChanged(),
);
}
}

View File

@ -0,0 +1,30 @@
import 'package:flutter/material.dart';
class NoteBodyEditor extends StatelessWidget {
final TextEditingController textController;
final bool autofocus;
final Function onChanged;
NoteBodyEditor({this.textController, this.autofocus, this.onChanged});
@override
Widget build(BuildContext context) {
var style = Theme.of(context).textTheme.subtitle1;
return TextField(
autofocus: autofocus,
keyboardType: TextInputType.multiline,
maxLines: null,
style: style,
decoration: const InputDecoration(
hintText: 'Write here',
border: InputBorder.none,
isDense: true,
),
controller: textController,
textCapitalization: TextCapitalization.sentences,
scrollPadding: const EdgeInsets.all(0.0),
onChanged: (_) => onChanged(),
);
}
}