theme_manager 2.0.4 theme_manager: ^2.0.4 copied to clipboard
A theme manager for light, dark, and system themes. Change the theme dynamically and the selected theme will be persisted.
theme_manager #
A theme manager for light, dark, and system themes. #
A theme manager that supports light, dark, and system default themes. State is retained and applied upon application start. Heavily inspired by dynamic_theme by Norbert Kozsir.
Getting Started #
Add theme_manager
to your project.
dependencies:
theme_manager: ^2.0.4
run flutter packages get
and import theme_manager
import 'package:theme_manager/theme_manager.dart';
A dialog is provided that can switch between themes.
import 'package:theme_manager/theme_picker_dialog.dart';
How to use #
Make sure WidgetsFlutterBinding
are initialized. This is required.
void main() {
WidgetsFlutterBinding.ensureInitialized(); // Required
runApp(MyApp());
}
Wrap your MaterialApp
with ThemeManager
:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ThemeManager(
defaultBrightnessPreference: BrightnessPreference.system,
data: (Brightness brightness) => ThemeData(
primarySwatch: Colors.blue,
accentColor: Colors.lightBlue,
brightness: brightness,
),
loadBrightnessOnStart: true,
themedWidgetBuilder: (BuildContext context, ThemeData theme) {
return MaterialApp(
title: 'Theme Manager Demo',
theme: theme,
home: MyHomePage(),
);
},
);
}
}
When you want to change your theme:
void setAsSystemDefault() =>
ThemeManager.of(context).setBrightnessPreference(BrightnessPreference.system);
void setAsLight() =>
ThemeManager.of(context).setBrightnessPreference(BrightnessPreference.light);
void setAsDark() =>
ThemeManager.of(context).setBrightnessPreference(BrightnessPreference.dark);
The system default will load either light or dark based on the device preferences. If your device changes themes at sunset or sunrise then light/dark mode will apply automatically.
The BrightnessPreference
is saved in SharedPreferences automatically. There is also a clear
function to remove the preferences.
void clear() => ThemeManager.of(context).clearBrightnessPreference();
A dialog widget to change the brightness! #
Getting Started #
For help getting started with Flutter, view our online documentation.
For help on editing package code, view the documentation.