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()
+4 -3
View File
@@ -286,8 +286,8 @@ 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(
@@ -296,13 +296,14 @@ class ListPage extends StatelessWidget {
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);
} }
} }