mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-01 12:23:44 +08:00
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:
@ -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),
|
||||
);
|
||||
}
|
||||
}
|
@ -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");
|
||||
|
@ -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();
|
||||
});
|
||||
|
@ -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) {
|
||||
|
Reference in New Issue
Block a user