blob: 37f29c62c9c75be8af2c39d8d7ba32a0bfdbbc05 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/foundation.dart';
import 'config_specific/logger/logger.dart';
import 'globals.dart';
/// A controller for global application preferences.
class PreferencesController {
final ValueNotifier<bool> _darkModeTheme = ValueNotifier(true);
ValueListenable get darkModeTheme => _darkModeTheme;
Future<void> init() async {
if (storage == null) {
// This can happen when running tests.
log('PreferencesController: storage not initialized');
return;
}
// Get the current values and listen for and write back changes.
final String value = await storage.getValue('ui.darkMode');
_darkModeTheme.value = value == null || value == 'true';
_darkModeTheme.addListener(() {
storage.setValue('ui.darkMode', '${_darkModeTheme.value}');
});
}
/// Change the value for the dark mode setting.
void toggleDarkModeTheme(bool useDarkMode) {
_darkModeTheme.value = useDarkMode;
}
}