diff --git a/lib/home.dart b/lib/home.dart index 0bbd9a4..2a5e977 100644 --- a/lib/home.dart +++ b/lib/home.dart @@ -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'; @@ -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 createState() => _HomePageState(); } @@ -23,6 +27,24 @@ class _HomePageState extends State { 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()); diff --git a/lib/main.dart b/lib/main.dart index 4096652..5befe3b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -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 @@ -33,6 +35,14 @@ class AnimeApp extends StatefulWidget { } class _AnimeAppState extends State { + Brightness brightness = SchedulerBinding.instance.window.platformBrightness; + + @override + void initState() { + _loadSettings(); + super.initState(); + } + @override Widget build(BuildContext context) { return MaterialApp( @@ -42,11 +52,25 @@ class _AnimeAppState extends State { 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(); + }); + } }