fixed issue #6

This commit is contained in:
odweta
2026-04-03 18:23:54 +02:00
parent 30591db7f3
commit 2b4e64c72f
3 changed files with 24 additions and 27 deletions
+4 -2
View File
@@ -16,7 +16,9 @@ import 'pages/flashcards.dart';
import 'pages/leaderboard.dart'; import 'pages/leaderboard.dart';
//import 'pages/settings.dart'; //import 'pages/settings.dart';
void main() { void main() async {
WidgetsFlutterBinding.ensureInitialized();
final isDark = await loadDarkMode();
runApp( runApp(
MultiProvider( MultiProvider(
providers: [ providers: [
@@ -24,7 +26,7 @@ void main() {
create: (_) => QuoteProvider() create: (_) => QuoteProvider()
), ),
ChangeNotifierProvider( ChangeNotifierProvider(
create: (_) => ThemeProvider() create: (_) => ThemeProvider(isDark: isDark)
) )
], ],
child: HlaskovnikFrontendApp() child: HlaskovnikFrontendApp()
+15 -14
View File
@@ -286,21 +286,22 @@ class ListPage extends StatelessWidget {
), ),
ListTile( ListTile(
title: Text(Strings.userPrefersDarkMode), title: Text(Strings.userPrefersDarkMode),
onTap: () { themeProvider.setDarkMode(!themeProvider.isDark); }, trailing: Consumer<ThemeProvider>(
trailing: Row( builder: (context, themeProvider, _) => Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only(right: Constants.edgeInset), padding: const EdgeInsets.only(right: Constants.edgeInset),
child: Switch( child: Switch(
onChanged: (value) { onChanged: (value) {
themeProvider.setDarkMode(value); themeProvider.setDarkMode(value);
}, },
value: themeProvider.isDark value: themeProvider.isDark,
),
), ),
), Icon(Icons.dark_mode),
Icon(Icons.dark_mode), ],
], ),
), ),
), ),
], ],
+5 -11
View File
@@ -13,22 +13,16 @@ Future<bool> loadDarkMode() async {
} }
class ThemeProvider extends ChangeNotifier { class ThemeProvider extends ChangeNotifier {
bool _isDark = false; bool _isDark;
bool get isDark => _isDark; bool get isDark => _isDark;
ThemeProvider() { ThemeProvider({required bool isDark}) : _isDark = isDark;
_load(); // load saved value on startup
}
void _load() async { void setDarkMode(bool value) {
_isDark = await loadDarkMode(); if (_isDark == value) return; // avoid unnecessary rebuilds
notifyListeners();
}
void setDarkMode(bool value) async {
_isDark = value; _isDark = value;
notifyListeners(); notifyListeners();
await saveDarkMode(value); saveDarkMode(value);
} }
} }