theme_manager 1.0.3 copy "theme_manager: ^1.0.3" to clipboard
theme_manager: ^1.0.3 copied to clipboard

outdated

A theme manager for light, dark, and system themes. Change the theme dynamically and the selected theme will be persisted.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:theme_manager/change_theme_widget.dart';
import 'package:theme_manager/theme_manager.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized(); // Required
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ThemeManager(
      /// WidgetsBinding.instance.window.platformBrightness is used because a
      /// Material BuildContext will not be available outside of the Material app
      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(),
        );
      },
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Theme Manager'),
        centerTitle: true,
      ),
      body: Center(
        child: IntrinsicWidth(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: <Widget>[
              RaisedButton(
                onPressed: () => ThemeManager.of(context)
                    .setBrightnessPreference(BrightnessPreference.system),
                child: const Text('System'),
              ),
              Padding(
                padding: const EdgeInsets.symmetric(vertical: 6),
                child: RaisedButton(
                  onPressed: () => ThemeManager.of(context)
                      .setBrightnessPreference(BrightnessPreference.light),
                  child: const Text('Light'),
                ),
              ),
              RaisedButton(
                onPressed: () => ThemeManager.of(context)
                    .setBrightnessPreference(BrightnessPreference.dark),
                child: const Text('Dark'),
              ),
            ],
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: showThemePicker,
        child: const Icon(Icons.color_lens, color: Colors.white),
      ),
    );
  }

  void showThemePicker() {
    showDialog<void>(
      context: context,
      builder: (BuildContext context) {
        return ThemePickerDialog(
          onSelectedTheme: (BrightnessPreference preference) {
            ThemeManager.of(context).setBrightnessPreference(preference);
          },
        );
      },
    );
  }
}
30
likes
0
pub points
92%
popularity

Publisher

unverified uploader

A theme manager for light, dark, and system themes. Change the theme dynamically and the selected theme will be persisted.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter, shared_preferences

More

Packages that depend on theme_manager