Allow a note of a different 'type' to easily created

This adds a bottom bar, which hopefully doesn't make the app too
cluttered.
This commit is contained in:
Vishesh Handa
2020-03-19 01:46:51 +01:00
parent 0a0e03a660
commit a235048b2a
6 changed files with 75 additions and 20 deletions

View File

@ -5,6 +5,7 @@ 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/settings.dart';
import 'package:gitjournal/utils.dart';
import 'standard_view.dart';
@ -25,7 +26,10 @@ Widget buildFolderView(
) {
var noteSelectionFn = (Note note) async {
var route = MaterialPageRoute(
builder: (context) => NoteEditor.fromNote(note),
builder: (context) => NoteEditor.fromNote(
note,
Settings.instance.defaultEditor.toEditorType(),
),
);
var showUndoSnackBar = await Navigator.of(context).push(route);
if (showUndoSnackBar != null) {

View File

@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/core/sorted_notes_folder.dart';
import 'package:gitjournal/core/sorting_mode.dart';
@ -80,7 +82,8 @@ class _FolderViewState extends State<FolderView> {
var createButton = FloatingActionButton(
key: const ValueKey("FAB"),
onPressed: () => _newPost(context),
onPressed: () =>
_newPost(context, Settings.instance.defaultEditor.toEditorType()),
child: Icon(Icons.add),
);
@ -152,7 +155,6 @@ class _FolderViewState extends State<FolderView> {
extraAction,
],
),
floatingActionButton: createButton,
body: Center(
child: Builder(
builder: (context) => RefreshIndicator(
@ -162,6 +164,39 @@ class _FolderViewState extends State<FolderView> {
),
),
drawer: AppDrawer(),
floatingActionButton: createButton,
floatingActionButtonLocation: FloatingActionButtonLocation.endDocked,
bottomNavigationBar: BottomAppBar(
color: Theme.of(context).bottomAppBarColor,
shape: const CircularNotchedRectangle(),
child: Row(
children: <Widget>[
Padding(
padding: const EdgeInsets.all(4.0),
child: IconButton(
icon: const FaIcon(FontAwesomeIcons.tasks),
onPressed: () => _newPost(context, EditorType.Checklist),
),
),
Padding(
padding: const EdgeInsets.all(4.0),
child: IconButton(
icon: const FaIcon(FontAwesomeIcons.markdown),
onPressed: () => _newPost(context, EditorType.Markdown),
),
),
Padding(
padding: const EdgeInsets.all(4.0),
child: IconButton(
icon: const FaIcon(FontAwesomeIcons.book),
onPressed: () => _newPost(context, EditorType.Journal),
),
),
],
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
),
),
);
}
@ -174,9 +209,10 @@ class _FolderViewState extends State<FolderView> {
}
}
void _newPost(BuildContext context) {
void _newPost(BuildContext context, EditorType editorType) {
var route = MaterialPageRoute(
builder: (context) => NoteEditor.newNote(widget.notesFolder.fsFolder));
builder: (context) =>
NoteEditor.newNote(widget.notesFolder.fsFolder, editorType));
Navigator.of(context).push(route);
}

View File

@ -7,7 +7,6 @@ import 'package:gitjournal/editors/journal_editor.dart';
import 'package:gitjournal/editors/markdown_editor.dart';
import 'package:gitjournal/editors/raw_editor.dart';
import 'package:gitjournal/editors/checklist_editor.dart';
import 'package:gitjournal/settings.dart';
import 'package:gitjournal/state_container.dart';
import 'package:gitjournal/widgets/folder_selection_dialog.dart';
import 'package:gitjournal/widgets/rename_dialog.dart';
@ -18,9 +17,10 @@ class ShowUndoSnackbar {}
class NoteEditor extends StatefulWidget {
final Note note;
final NotesFolder notesFolder;
final EditorType defaultEditorType;
NoteEditor.fromNote(this.note) : notesFolder = null;
NoteEditor.newNote(this.notesFolder) : note = null;
NoteEditor.fromNote(this.note, this.defaultEditorType) : notesFolder = null;
NoteEditor.newNote(this.notesFolder, this.defaultEditorType) : note = null;
@override
NoteEditorState createState() {
@ -59,18 +59,7 @@ class NoteEditorState extends State<NoteEditor> {
@override
void initState() {
super.initState();
switch (Settings.instance.defaultEditor) {
case SettingsEditorType.Markdown:
editorType = EditorType.Markdown;
break;
case SettingsEditorType.Raw:
editorType = EditorType.Raw;
break;
case SettingsEditorType.Journal:
editorType = EditorType.Journal;
break;
}
editorType = widget.defaultEditorType;
}
@override

View File

@ -1,3 +1,4 @@
import 'package:gitjournal/screens/note_editor.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:gitjournal/core/sorting_mode.dart';
@ -225,6 +226,7 @@ class SettingsEditorType {
static const Markdown = SettingsEditorType("Markdown", "Markdown");
static const Raw = SettingsEditorType("Raw", "Raw");
static const Journal = SettingsEditorType("Journal", "Journal");
static const Checklist = SettingsEditorType("Checklist", "Checklist");
static const Default = Markdown;
final String _str;
@ -239,10 +241,26 @@ class SettingsEditorType {
return _publicString;
}
EditorType toEditorType() {
switch (this) {
case Markdown:
return EditorType.Markdown;
case Raw:
return EditorType.Raw;
case Journal:
return EditorType.Journal;
case Checklist:
return EditorType.Checklist;
default:
return EditorType.Markdown;
}
}
static const options = <SettingsEditorType>[
Markdown,
Raw,
Journal,
Checklist,
];
static SettingsEditorType fromInternalString(String str) {

View File

@ -238,6 +238,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
font_awesome_flutter:
dependency: "direct main"
description:
name: font_awesome_flutter
url: "https://pub.dartlang.org"
source: hosted
version: "8.7.0"
freezed_annotation:
dependency: transitive
description:

View File

@ -38,6 +38,7 @@ dependencies:
git_url_parse2: ^0.0.1
synchronized: ^2.2.0
steel_crypt: ^1.7.1+1
font_awesome_flutter: ^8.7.0
dev_dependencies:
flutter_launcher_icons: "^0.7.2"