mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-09-12 14:09:12 +08:00
100 lines
2.9 KiB
Dart
100 lines
2.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:gitjournal/core/note.dart';
|
|
import 'package:gitjournal/core/notes_folder.dart';
|
|
import 'package:gitjournal/folder_views/card_view.dart';
|
|
import 'package:gitjournal/folder_views/grid_view.dart';
|
|
import 'package:gitjournal/folder_views/journal_view.dart';
|
|
import 'package:gitjournal/screens/note_editor.dart';
|
|
import 'package:gitjournal/state_container.dart';
|
|
import 'package:gitjournal/utils.dart';
|
|
import 'package:gitjournal/utils/logger.dart';
|
|
import 'standard_view.dart';
|
|
|
|
enum FolderViewType {
|
|
Standard,
|
|
Journal,
|
|
Card,
|
|
Grid,
|
|
}
|
|
|
|
Widget buildFolderView({
|
|
@required FolderViewType viewType,
|
|
@required NotesFolder folder,
|
|
@required String emptyText,
|
|
@required StandardViewHeader header,
|
|
@required bool showSummary,
|
|
@required NoteSelectedFunction noteTapped,
|
|
@required NoteSelectedFunction noteLongPressed,
|
|
@required NoteBoolPropertyFunction isNoteSelected,
|
|
@required String searchTerm,
|
|
}) {
|
|
switch (viewType) {
|
|
case FolderViewType.Standard:
|
|
return StandardView(
|
|
folder: folder,
|
|
noteTapped: noteTapped,
|
|
noteLongPressed: noteLongPressed,
|
|
emptyText: emptyText,
|
|
headerType: header,
|
|
showSummary: showSummary,
|
|
isNoteSelected: isNoteSelected,
|
|
searchTerm: searchTerm,
|
|
);
|
|
case FolderViewType.Journal:
|
|
return JournalView(
|
|
folder: folder,
|
|
noteTapped: noteTapped,
|
|
noteLongPressed: noteLongPressed,
|
|
emptyText: emptyText,
|
|
isNoteSelected: isNoteSelected,
|
|
searchTerm: searchTerm,
|
|
);
|
|
case FolderViewType.Card:
|
|
return CardView(
|
|
folder: folder,
|
|
noteTapped: noteTapped,
|
|
noteLongPressed: noteLongPressed,
|
|
emptyText: emptyText,
|
|
isNoteSelected: isNoteSelected,
|
|
searchTerm: searchTerm,
|
|
);
|
|
case FolderViewType.Grid:
|
|
return GridFolderView(
|
|
folder: folder,
|
|
noteTapped: noteTapped,
|
|
noteLongPressed: noteLongPressed,
|
|
emptyText: emptyText,
|
|
isNoteSelected: isNoteSelected,
|
|
searchTerm: searchTerm,
|
|
);
|
|
}
|
|
|
|
assert(false, "Code path should never be executed");
|
|
return Container();
|
|
}
|
|
|
|
void openNoteEditor(
|
|
BuildContext context,
|
|
Note note,
|
|
NotesFolder parentFolder, {
|
|
bool editMode = false,
|
|
}) async {
|
|
var route = MaterialPageRoute(
|
|
builder: (context) => NoteEditor.fromNote(note, parentFolder, editMode: editMode),
|
|
settings: const RouteSettings(name: '/note/'),
|
|
);
|
|
var showUndoSnackBar = await Navigator.of(context).push(route);
|
|
if (showUndoSnackBar != null) {
|
|
Log.d("Showing an undo snackbar");
|
|
|
|
var stateContainer = Provider.of<StateContainer>(context, listen: false);
|
|
var snackBar = buildUndoDeleteSnackbar(stateContainer, note);
|
|
Scaffold.of(context)
|
|
..removeCurrentSnackBar()
|
|
..showSnackBar(snackBar);
|
|
}
|
|
}
|