Add experimental card view

This notes are displayed as cards. This is meant to emulate a more
google keep style.
This commit is contained in:
Vishesh Handa
2020-03-12 14:23:15 +01:00
parent 48f4d52c40
commit f4dd4fd148
4 changed files with 35 additions and 12 deletions

View File

@ -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<Note> 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),
);
}
}

View File

@ -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");

View File

@ -53,6 +53,9 @@ class _FolderViewState extends State<FolderView> {
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<FolderView> {
groupValue: _viewType,
onChanged: onViewChange,
),
RadioListTile<FolderViewType>(
title: const Text("Card View (Experimental)"),
value: FolderViewType.Card,
groupValue: _viewType,
onChanged: onViewChange,
),
];
return AlertDialog(
@ -350,6 +359,9 @@ class _FolderViewState extends State<FolderView> {
case FolderViewType.Journal:
Settings.instance.defaultView = SettingsFolderViewType.Journal;
break;
case FolderViewType.Card:
Settings.instance.defaultView = SettingsFolderViewType.Card;
break;
}
Settings.instance.save();
});

View File

@ -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 = <SettingsFolderViewType>[
Standard,
Journal,
Card,
];
static SettingsFolderViewType fromInternalString(String str) {