From 8bc9ac91707110135215ecb4ebad2d0959b2227f Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Wed, 14 Aug 2019 18:49:54 +0200 Subject: [PATCH] Settings: Allow the fontSize of the viewer to be changed No ui has been created for this so far. --- lib/screens/note_viewer.dart | 4 +++- lib/settings.dart | 41 ++++++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/lib/screens/note_viewer.dart b/lib/screens/note_viewer.dart index 477cebf4..fe49ef53 100644 --- a/lib/screens/note_viewer.dart +++ b/lib/screens/note_viewer.dart @@ -5,6 +5,7 @@ import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:journal/note.dart'; import 'package:journal/state_container.dart'; import 'package:journal/utils.dart'; +import 'package:journal/settings.dart'; import 'package:journal/widgets/note_header.dart'; import 'package:share/share.dart'; @@ -133,7 +134,8 @@ class NoteViewer extends StatelessWidget { ThemeData theme = Theme.of(context); theme = theme.copyWith( textTheme: theme.textTheme.copyWith( - body1: theme.textTheme.body1.copyWith(fontSize: 18.0), + body1: theme.textTheme.body1 + .copyWith(fontSize: Settings.instance.getNoteViewerFontSize()), ), ); diff --git a/lib/settings.dart b/lib/settings.dart index 24b5b143..f97f6784 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -1,23 +1,60 @@ import 'package:shared_preferences/shared_preferences.dart'; +import 'package:flutter/foundation.dart'; + +enum NoteViewerFontSize { Normal, Small, ExtraSmall, Large, ExtraLarge } class Settings { + static List changeObservers; + // singleton static final Settings _singleton = Settings._internal(); factory Settings() => _singleton; Settings._internal(); static Settings get instance => _singleton; + // Properties + String gitAuthor = "GitJournal"; + String gitAuthorEmail = "app@gitjournal.io"; + + NoteViewerFontSize noteViewerFontSize = NoteViewerFontSize.Normal; + void load(SharedPreferences pref) { gitAuthor = pref.getString("gitAuthor") ?? gitAuthor; gitAuthorEmail = pref.getString("gitAuthorEmail") ?? gitAuthorEmail; + + var str = + pref.getString("noteViewerFontSize") ?? noteViewerFontSize.toString(); + print(NoteViewerFontSize.values); + noteViewerFontSize = + NoteViewerFontSize.values.firstWhere((e) => e.toString() == str); } Future save() async { var pref = await SharedPreferences.getInstance(); pref.setString("gitAuthor", gitAuthor); pref.setString("gitAuthorEmail", gitAuthorEmail); + + // Shouldn't we check if something has actually changed? + for (var f in changeObservers) { + f(); + } } - String gitAuthor = "GitJournal"; - String gitAuthorEmail = "app@gitjournal.io"; + double getNoteViewerFontSize() { + switch (noteViewerFontSize) { + case NoteViewerFontSize.Normal: + return 18.0; + case NoteViewerFontSize.Small: + return 15.0; + case NoteViewerFontSize.ExtraSmall: + return 12.0; + case NoteViewerFontSize.Large: + return 22.0; + case NoteViewerFontSize.ExtraLarge: + return 26.0; + } + + assert(false, "getNoteViewerFontSize: We should never be here"); + return 50000.0; + } }