Skip to content

viktorvoltz/theming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

theming

This is an opinionated and effective way to provide multi-theme choice for your app.

theming depends on provider and shared_preference for state management and data retention respectively.

theming solves the issue of loading a default theme on the app startup before fetching last theme state from shared pref. After seeing this issue in two public articles, i decided to give it a try :shipit:

key code

in main() and before runApp() is loaded, a single instance of SharedPreferences (none is created again thoughout the app) is created and passed into ThemeProvider. This is bacause it is imperative to acquire the last/previous theme state before loading the app. yes, themeProvider.assertTheme().

final pref = await SharedPreferences.getInstance();
  ThemeProvider themeProvider = ThemeProvider(pref);
  themeProvider.assertTheme();

the key to retaining the value of themeProvider.assertTheme() is assigning relevant data it to a static variable.

static ThemeData? _themeData;

_themeData retains its value through the creation and recreation of the ThemeProvider object in app's lifecycle.

in what is relevant here, our variable of type ThemeData will work our trick.

if you find this repo useful, make sure to star 🌟 it. thank you.

About

🎨 An opinionated, effective and correct way to provide multiple themes to your app.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published