FolderViews: Minor refactor

Expose the noteTapped and noteLongPressed functions from all the views.
This will be required in the future as we support selecting a note (or
multiple notes) in order to perform some action on it.

Right now selecting a note means opening the Note Editor.
This commit is contained in:
Vishesh Handa
2020-07-31 19:38:26 +02:00
parent ad6cf615a3
commit 27c98b8b0a
6 changed files with 47 additions and 20 deletions

View File

@ -7,14 +7,16 @@ import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/folder_views/note_tile.dart'; import 'package:gitjournal/folder_views/note_tile.dart';
class CardView extends StatelessWidget { class CardView extends StatelessWidget {
final NoteSelectedFunction noteSelectedFunction; final NoteSelectedFunction noteTapped;
final NoteSelectedFunction noteLongPressed;
final NotesFolder folder; final NotesFolder folder;
final String emptyText; final String emptyText;
final bool fixedHeight; final bool fixedHeight;
CardView({ CardView({
@required this.folder, @required this.folder,
@required this.noteSelectedFunction, @required this.noteTapped,
@required this.noteLongPressed,
@required this.emptyText, @required this.emptyText,
this.fixedHeight = false, this.fixedHeight = false,
}); });
@ -46,7 +48,11 @@ class CardView extends StatelessWidget {
itemCount: folder.notes.length, itemCount: folder.notes.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
var note = folder.notes[index]; var note = folder.notes[index];
return NoteTile(note, noteSelectedFunction); return NoteTile(
note: note,
noteTapped: noteTapped,
noteLongPressed: noteLongPressed,
);
}, },
maxCrossAxisExtent: 200.0, maxCrossAxisExtent: 200.0,
staggeredTileBuilder: (int i) => stagTile, staggeredTileBuilder: (int i) => stagTile,

View File

@ -29,12 +29,14 @@ Widget buildFolderView(
bool showSummary, bool showSummary,
) { ) {
var noteSelectionFn = (Note note) => openNoteEditor(context, note); var noteSelectionFn = (Note note) => openNoteEditor(context, note);
var noteLongPressedFn = (Note note) {};
switch (viewType) { switch (viewType) {
case FolderViewType.Standard: case FolderViewType.Standard:
return StandardView( return StandardView(
folder: folder, folder: folder,
noteSelectedFunction: noteSelectionFn, noteTapped: noteSelectionFn,
noteLongPressed: noteLongPressedFn,
emptyText: emptyText, emptyText: emptyText,
headerType: header, headerType: header,
showSummary: showSummary, showSummary: showSummary,
@ -42,19 +44,22 @@ Widget buildFolderView(
case FolderViewType.Journal: case FolderViewType.Journal:
return JournalView( return JournalView(
folder: folder, folder: folder,
noteSelectedFunction: noteSelectionFn, noteTapped: noteSelectionFn,
noteLongPressed: noteLongPressedFn,
emptyText: emptyText, emptyText: emptyText,
); );
case FolderViewType.Card: case FolderViewType.Card:
return CardView( return CardView(
folder: folder, folder: folder,
noteSelectedFunction: noteSelectionFn, noteTapped: noteSelectionFn,
noteLongPressed: noteLongPressedFn,
emptyText: emptyText, emptyText: emptyText,
); );
case FolderViewType.Grid: case FolderViewType.Grid:
return GridFolderView( return GridFolderView(
folder: folder, folder: folder,
noteSelectedFunction: noteSelectionFn, noteTapped: noteSelectionFn,
noteLongPressed: noteLongPressedFn,
emptyText: emptyText, emptyText: emptyText,
); );
} }

View File

@ -6,13 +6,15 @@ import 'package:gitjournal/folder_views/card_view.dart';
import 'package:gitjournal/folder_views/note_tile.dart'; import 'package:gitjournal/folder_views/note_tile.dart';
class GridFolderView extends StatelessWidget { class GridFolderView extends StatelessWidget {
final NoteSelectedFunction noteSelectedFunction; final NoteSelectedFunction noteTapped;
final NoteSelectedFunction noteLongPressed;
final NotesFolder folder; final NotesFolder folder;
final String emptyText; final String emptyText;
GridFolderView({ GridFolderView({
@required this.folder, @required this.folder,
@required this.noteSelectedFunction, @required this.noteTapped,
@required this.noteLongPressed,
@required this.emptyText, @required this.emptyText,
}); });
@ -20,7 +22,8 @@ class GridFolderView extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return CardView( return CardView(
folder: folder, folder: folder,
noteSelectedFunction: noteSelectedFunction, noteTapped: noteTapped,
noteLongPressed: noteLongPressed,
emptyText: emptyText, emptyText: emptyText,
fixedHeight: true, fixedHeight: true,
); );

View File

@ -9,7 +9,8 @@ import 'package:gitjournal/core/sorting_mode.dart';
import 'package:gitjournal/folder_views/list_view.dart'; import 'package:gitjournal/folder_views/list_view.dart';
class JournalView extends StatelessWidget { class JournalView extends StatelessWidget {
final NoteSelectedFunction noteSelectedFunction; final NoteSelectedFunction noteTapped;
final NoteSelectedFunction noteLongPressed;
final NotesFolder folder; final NotesFolder folder;
final String emptyText; final String emptyText;
@ -18,7 +19,8 @@ class JournalView extends StatelessWidget {
JournalView({ JournalView({
@required this.folder, @required this.folder,
@required this.noteSelectedFunction, @required this.noteTapped,
@required this.noteLongPressed,
@required this.emptyText, @required this.emptyText,
}); });
@ -77,7 +79,8 @@ class JournalView extends StatelessWidget {
children: children, children: children,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
), ),
onTap: () => noteSelectedFunction(note), onTap: () => noteTapped(note),
onLongPress: () => noteLongPressed(note),
); );
var dc = Theme.of(context).dividerColor; var dc = Theme.of(context).dividerColor;

View File

@ -9,9 +9,14 @@ typedef void NoteSelectedFunction(Note note);
class NoteTile extends StatelessWidget { class NoteTile extends StatelessWidget {
final Note note; final Note note;
final NoteSelectedFunction noteSelectedFunction; final NoteSelectedFunction noteTapped;
final NoteSelectedFunction noteLongPressed;
NoteTile(this.note, this.noteSelectedFunction); NoteTile({
@required this.note,
@required this.noteTapped,
@required this.noteLongPressed,
});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -76,7 +81,8 @@ class NoteTile extends StatelessWidget {
child: InkWell( child: InkWell(
child: tileContent, child: tileContent,
borderRadius: borderRadius, borderRadius: borderRadius,
onTap: () => noteSelectedFunction(note), onTap: () => noteTapped(note),
onLongPress: () => noteLongPressed(note),
), ),
); );
} }

View File

@ -15,7 +15,8 @@ enum StandardViewHeader {
} }
class StandardView extends StatelessWidget { class StandardView extends StatelessWidget {
final NoteSelectedFunction noteSelectedFunction; final NoteSelectedFunction noteTapped;
final NoteSelectedFunction noteLongPressed;
final NotesFolder folder; final NotesFolder folder;
final String emptyText; final String emptyText;
@ -26,7 +27,8 @@ class StandardView extends StatelessWidget {
StandardView({ StandardView({
@required this.folder, @required this.folder,
@required this.noteSelectedFunction, @required this.noteTapped,
@required this.noteLongPressed,
@required this.emptyText, @required this.emptyText,
@required this.headerType, @required this.headerType,
@required this.showSummary, @required this.showSummary,
@ -115,13 +117,15 @@ class StandardView extends StatelessWidget {
children: summary, children: summary,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
), ),
onTap: () => noteSelectedFunction(note), onTap: () => noteTapped(note),
onLongPress: () => noteLongPressed(note),
); );
} else { } else {
tile = ListTile( tile = ListTile(
isThreeLine: false, isThreeLine: false,
title: titleRow, title: titleRow,
onTap: () => noteSelectedFunction(note), onTap: () => noteTapped(note),
onLongPress: () => noteLongPressed(note),
); );
} }