diff --git a/lib/src/app.dart b/lib/src/app.dart index caee144..92a2a62 100644 --- a/lib/src/app.dart +++ b/lib/src/app.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:quickgui/src/globals.dart'; +import 'package:quickgui/src/mixins/preferences_mixin.dart'; import 'package:quickgui/src/model/app_theme.dart'; import 'package:quickgui/src/pages/main_page.dart'; @@ -10,16 +12,30 @@ class App extends StatefulWidget { State createState() => _AppState(); } -class _AppState extends State { +class _AppState extends State with PreferencesMixin { @override Widget build(BuildContext context) { - return Consumer( - builder: (context, appTheme, _) => MaterialApp( - theme: ThemeData(primarySwatch: Colors.pink), - darkTheme: ThemeData.dark(), - themeMode: appTheme.themeMode, - home: const MainPage(title: 'Quickgui - A Flutter frontend for Quickget and Quickemu'), - ), + return FutureBuilder( + future: getPreference(prefThemeMode), + builder: (context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + if (snapshot.data != null) { + context.read().useDarkMode = snapshot.data!; + } + return Consumer( + builder: (context, appTheme, _) => MaterialApp( + theme: ThemeData(primarySwatch: Colors.pink), + darkTheme: ThemeData.dark(), + themeMode: appTheme.themeMode, + home: const MainPage(title: 'Quickgui - A Flutter frontend for Quickget and Quickemu'), + ), + ); + } else { + return const Center( + child: CircularProgressIndicator(), + ); + } + }, ); } } diff --git a/lib/src/globals.dart b/lib/src/globals.dart index 75b67e0..edb9231 100644 --- a/lib/src/globals.dart +++ b/lib/src/globals.dart @@ -2,3 +2,4 @@ import 'dart:io'; var gIsSnap = Platform.environment['SNAP']?.isNotEmpty ?? false; const String prefWorkingDirectory = 'workingDirectory'; +const String prefThemeMode = 'themeMode'; diff --git a/lib/src/widgets/left_menu.dart b/lib/src/widgets/left_menu.dart index 9495fd1..39d8148 100644 --- a/lib/src/widgets/left_menu.dart +++ b/lib/src/widgets/left_menu.dart @@ -1,10 +1,12 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:quickgui/src/globals.dart'; import 'package:quickgui/src/mixins/app_version.dart'; +import 'package:quickgui/src/mixins/preferences_mixin.dart'; import 'package:quickgui/src/model/app_theme.dart'; -class LeftMenu extends StatelessWidget { +class LeftMenu extends StatelessWidget with PreferencesMixin { const LeftMenu({Key? key}) : super(key: key); @override @@ -27,6 +29,7 @@ class LeftMenu extends StatelessWidget { value: Theme.of(context).brightness == Brightness.dark, onChanged: (value) { appTheme.useDarkMode = value; + savePreference(prefThemeMode, value); }, ), ],