Add a basic dark theme

It's not that pretty, but this adds the scaffolding.
This commit is contained in:
Vishesh Handa
2019-09-25 15:54:37 +02:00
parent 11a9023e99
commit 957e493494
4 changed files with 55 additions and 7 deletions

View File

@ -12,6 +12,7 @@ import 'package:journal/settings.dart';
import 'package:journal/state_container.dart';
import 'package:journal/utils.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:dynamic_theme/dynamic_theme.dart';
import 'screens/githostsetup_screens.dart';
import 'screens/onboarding_screens.dart';
@ -111,6 +112,32 @@ class JournalApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DynamicTheme(
defaultBrightness: Brightness.light,
data: (brightness) {
if (brightness == Brightness.light) {
return ThemeData(
brightness: Brightness.light,
primaryColor: Color(0xFF66bb6a),
primaryColorLight: Color(0xFF98ee99),
primaryColorDark: Color(0xFF338a3e),
accentColor: Color(0xff6d4c41),
);
} else {
return ThemeData(
brightness: Brightness.dark,
primaryColor: Color(0xFF66bb6a),
primaryColorLight: Color(0xFF98ee99),
primaryColorDark: Color(0xFF338a3e),
accentColor: Color(0xff6d4c41),
);
}
},
themedWidgetBuilder: buildApp,
);
}
MaterialApp buildApp(BuildContext context, ThemeData themeData) {
var stateContainer = StateContainer.of(context);
var initialRoute = '/';
@ -121,13 +148,7 @@ class JournalApp extends StatelessWidget {
return MaterialApp(
key: ValueKey("App"),
title: 'GitJournal',
theme: ThemeData(
brightness: Brightness.light,
primaryColor: Color(0xFF66bb6a),
primaryColorLight: Color(0xFF98ee99),
primaryColorDark: Color(0xFF338a3e),
accentColor: Color(0xff6d4c41),
),
theme: themeData,
navigatorObservers: <NavigatorObserver>[JournalApp.observer],
initialRoute: initialRoute,
routes: {

View File

@ -3,6 +3,7 @@ import 'package:journal/settings.dart';
import 'package:journal/utils.dart';
import 'package:preferences/preferences.dart';
import 'package:dynamic_theme/dynamic_theme.dart';
class SettingsScreen extends StatelessWidget {
@override
@ -143,6 +144,24 @@ class SettingsListState extends State<SettingsList> {
return PreferencePage([
PreferenceTitle('Display Settings'),
DropdownPreference(
'Theme',
'theme',
defaultVal: "Light",
values: ["Light", "Dark"],
onChange: (newVal) {
var dynamicTheme = DynamicTheme.of(context);
switch (newVal) {
case "Dark":
dynamicTheme.setBrightness(Brightness.dark);
break;
case "Light":
case "default":
dynamicTheme.setBrightness(Brightness.light);
break;
}
},
),
DropdownPreference(
'Font Size',
'font_size',

View File

@ -99,6 +99,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.5+1"
dynamic_theme:
dependency: "direct main"
description:
name: dynamic_theme
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
file:
dependency: transitive
description:

View File

@ -26,6 +26,7 @@ dependencies:
auto_size_text: ^2.0.1
fimber: ^0.3.0
preferences: ^4.0.0
dynamic_theme: ^1.0.0
dev_dependencies:
flutter_launcher_icons: "^0.7.2"