Skip to content

Commit

Permalink
Implemented dark mode
Browse files Browse the repository at this point in the history
  • Loading branch information
creeperkafasi committed Sep 26, 2023
1 parent ea5a64e commit 3a3e556
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 2 deletions.
22 changes: 22 additions & 0 deletions lib/home.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:miteru/search.dart';
import 'package:miteru/show.dart';
import 'package:miteru/trackers.dart';
Expand All @@ -9,8 +10,11 @@ import 'package:shared_preferences/shared_preferences.dart';
class HomePage extends StatefulWidget {
const HomePage({
super.key,
required this.refreshFunc,
});

final VoidCallback refreshFunc;

@override
State<HomePage> createState() => _HomePageState();
}
Expand All @@ -23,6 +27,24 @@ class _HomePageState extends State<HomePage> {
appBar: AppBar(
title: const Text("Miteru"),
actions: [
Builder(builder: (context) {
final brightness = Theme.of(context).brightness;
return IconButton(
onPressed: () async {
final prefs = await SharedPreferences.getInstance();
setState(() {
prefs.setBool(
"brightness", !(prefs.getBool("brightness") ?? true));
widget.refreshFunc();
});
},
icon: Icon(
(brightness == Brightness.dark)
? Icons.dark_mode
: Icons.light_mode,
),
);
}),
IconButton(
onPressed: () {
showSearch(context: context, delegate: AnimeSearchDelegate());
Expand Down
28 changes: 26 additions & 2 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import 'dart:io';

import 'package:flutter/scheduler.dart';
import 'package:fvp/fvp.dart';
import 'package:miteru/home.dart';
import 'package:flutter/material.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
import 'package:shared_preferences/shared_preferences.dart';

class MyHttpOverrides extends HttpOverrides {
@override
Expand Down Expand Up @@ -33,6 +35,14 @@ class AnimeApp extends StatefulWidget {
}

class _AnimeAppState extends State<AnimeApp> {
Brightness brightness = SchedulerBinding.instance.window.platformBrightness;

@override
void initState() {
_loadSettings();
super.initState();
}

@override
Widget build(BuildContext context) {
return MaterialApp(
Expand All @@ -42,11 +52,25 @@ class _AnimeAppState extends State<AnimeApp> {
theme: ThemeData.from(
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.red,
// brightness: Brightness.dark,
brightness: brightness ?? Brightness.light,
),
useMaterial3: true,
),
home: const HomePage(),
home: HomePage(refreshFunc: refresh),
);
}

// Shitty global settings logic: themes, etc.
_loadSettings() async {
final prefs = await SharedPreferences.getInstance();
brightness = prefs.getBool("brightness") ?? true
? Brightness.light
: Brightness.dark;
}

refresh() {
setState(() {
_loadSettings();
});
}
}

0 comments on commit 3a3e556

Please sign in to comment.