fixed issue #6
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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),
|
],
|
||||||
],
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user