From f4dd4fd148245616c85b706be388914a28df2ba9 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Thu, 12 Mar 2020 14:23:15 +0100 Subject: [PATCH] Add experimental card view This notes are displayed as cards. This is meant to emulate a more google keep style. --- .../card_view.dart} | 25 ++++++++++--------- lib/folder_views/common.dart | 8 ++++++ lib/screens/folder_view.dart | 12 +++++++++ lib/settings.dart | 2 ++ 4 files changed, 35 insertions(+), 12 deletions(-) rename lib/{widgets/notes_list.dart => folder_views/card_view.dart} (78%) diff --git a/lib/widgets/notes_list.dart b/lib/folder_views/card_view.dart similarity index 78% rename from lib/widgets/notes_list.dart rename to lib/folder_views/card_view.dart index 0c33dff5..4b9ff1d7 100644 --- a/lib/widgets/notes_list.dart +++ b/lib/folder_views/card_view.dart @@ -2,23 +2,24 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:gitjournal/core/note.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; +import 'package:gitjournal/core/notes_folder.dart'; -typedef void NoteSelectedFunction(int noteIndex); +typedef void NoteSelectedFunction(Note note); -class NotesList extends StatelessWidget { +class CardView extends StatelessWidget { final NoteSelectedFunction noteSelectedFunction; - final List notes; + final NotesFolderReadOnly folder; final String emptyText; - NotesList({ - @required this.notes, + CardView({ + @required this.folder, @required this.noteSelectedFunction, @required this.emptyText, }); @override Widget build(BuildContext context) { - if (notes.isEmpty) { + if (folder.isEmpty) { return Center( child: Text( emptyText, @@ -34,10 +35,10 @@ class NotesList extends StatelessWidget { var gridView = StaggeredGridView.countBuilder( crossAxisCount: 4, - itemCount: notes.length, + itemCount: folder.notes.length, itemBuilder: (BuildContext context, int index) { - var note = notes[index]; - return _buildNoteCard(context, note, index); + var note = folder.notes[index]; + return _buildNoteCard(context, note); }, staggeredTileBuilder: (int i) => const StaggeredTile.fit(2), mainAxisSpacing: 8.0, @@ -50,8 +51,8 @@ class NotesList extends StatelessWidget { ); } - Widget _buildNoteCard(BuildContext context, Note journal, int noteIndex) { - var body = journal.summary; + Widget _buildNoteCard(BuildContext context, Note note) { + var body = note.body; var textTheme = Theme.of(context).textTheme; var tileContent = Padding( @@ -82,7 +83,7 @@ class NotesList extends StatelessWidget { return InkWell( child: tile, borderRadius: borderRadius, - //onTap: () => noteSelectedFunction(noteIndex), + onTap: () => noteSelectedFunction(note), ); } } diff --git a/lib/folder_views/common.dart b/lib/folder_views/common.dart index 77f1ee01..c02c8c36 100644 --- a/lib/folder_views/common.dart +++ b/lib/folder_views/common.dart @@ -2,6 +2,7 @@ import 'package:fimber/fimber.dart'; import 'package:flutter/material.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/journal_view.dart'; import 'package:gitjournal/screens/note_editor.dart'; import 'package:gitjournal/utils.dart'; @@ -11,6 +12,7 @@ import 'standard_view.dart'; enum FolderViewType { Standard, Journal, + Card, } Widget buildFolderView( @@ -49,6 +51,12 @@ Widget buildFolderView( noteSelectedFunction: noteSelectionFn, emptyText: emptyText, ); + case FolderViewType.Card: + return CardView( + folder: folder, + noteSelectedFunction: noteSelectionFn, + emptyText: emptyText, + ); } assert(false, "Code path should never be executed"); diff --git a/lib/screens/folder_view.dart b/lib/screens/folder_view.dart index 168c6d41..0686e8a2 100644 --- a/lib/screens/folder_view.dart +++ b/lib/screens/folder_view.dart @@ -53,6 +53,9 @@ class _FolderViewState extends State { case SettingsFolderViewType.Journal: _viewType = FolderViewType.Journal; break; + case SettingsFolderViewType.Card: + _viewType = FolderViewType.Card; + break; } _showSummary = Settings.instance.showNoteSummary; @@ -327,6 +330,12 @@ class _FolderViewState extends State { groupValue: _viewType, onChanged: onViewChange, ), + RadioListTile( + title: const Text("Card View (Experimental)"), + value: FolderViewType.Card, + groupValue: _viewType, + onChanged: onViewChange, + ), ]; return AlertDialog( @@ -350,6 +359,9 @@ class _FolderViewState extends State { case FolderViewType.Journal: Settings.instance.defaultView = SettingsFolderViewType.Journal; break; + case FolderViewType.Card: + Settings.instance.defaultView = SettingsFolderViewType.Card; + break; } Settings.instance.save(); }); diff --git a/lib/settings.dart b/lib/settings.dart index 98b3ea62..7c0da673 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -271,6 +271,7 @@ class SettingsEditorType { class SettingsFolderViewType { static const Standard = SettingsFolderViewType("Standard", "Standard"); static const Journal = SettingsFolderViewType("Journal", "Journal"); + static const Card = SettingsFolderViewType("Card", "Card"); static const Default = Standard; final String _str; @@ -288,6 +289,7 @@ class SettingsFolderViewType { static const options = [ Standard, Journal, + Card, ]; static SettingsFolderViewType fromInternalString(String str) {