Skip to content
This repository has been archived by the owner on May 20, 2021. It is now read-only.

sanihaq/themes_manager

Repository files navigation

Flutter Themes Manger

A Themes Manger for your flutter app. Handles multiple themes in your app and easily switch between them. Generate new themes on the fly. Create your own Themes with custom data.

Getting Started

Add themes_manager to your project.

  dependencies:
    themes_manager: ^1.0.0

run flutter packages get and import themes_manager

import 'package:themes_manager/theme_manager.dart';

How to configure themes data

class MyApp extends StatelessWidget {
  final List<ThemeManagerData> themes = [
    ThemeManagerData(
      key: 'default-dark',
      name: 'Default Dark',
      creator: '',
      themeData: ThemeData.dark(),
    ),
    ThemeManagerData(
      key: 'default-light',
      name: 'Default Light',
      creator: '',
      themeData: ThemeData(),
    ),
  ];
  final List<CupertinoThemeManagerData> cupertinoThemes = [
    CupertinoThemeManagerData(
      key: 'default',
      name: 'Default',
      creator: '',
      themeData: CupertinoThemeData().copyWith(
        primaryColor: Colors.amber,
      ),
    ),
  ]

// Wrap your app `Widget` with `ThemesManager`:
  @override
  Widget build(BuildContext context) {
    return ThemesManager(
      defaultLightTheme: 'default-light',
      defaultDarkTheme: 'default-dark',
      defaultCupertinoTheme: 'default',
      themeMode: ThemeMode.system,
      themes: themes,
      cupertinoThemes: cupertinoThemes,
      // configure custom data.
      customData: [
        CustomThemeManagerData(
          key: 'example',
          data: 'Your Data Object'
        ),
      ],
      child: MyAppWidget(),
    ),
  }
}

How to add additional theme later in the app:

...
ThemesManager.of(context).generateTheme(
  ThemeManagerData(
    key: 'generated-theme',
    name: 'Generated Theme',
    creator: 'creator name',
    themeData: ThemeData.dark().copyWith(),
  ),
);
...

How to access customData

// remember you can pass any kind of data. To get type checking, you just need to pass the data type while getting that data.
ThemesManager.customDataOf<String>(context);

Additional Help

For help getting started with Flutter, view our online documentation.

For help on editing package code, view the documentation.

About

A Flutter Themes Manager for handling multiple themes.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published