flutter_theme_provider 0.0.4 copy "flutter_theme_provider: ^0.0.4" to clipboard
flutter_theme_provider: ^0.0.4 copied to clipboard

A simple theme chenging plugin for flutter made top of provider

example/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_theme_provider/flutter_theme_provider.dart';
import 'package:provider/provider.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  SystemChrome.setSystemUIOverlayStyle(
    const SystemUiOverlayStyle(
      statusBarIconBrightness: Brightness.light,
      statusBarColor: Color(0xffbb00),
    ),
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        ChangeNotifierProvider(
            create: (context) =>
                ThemeProvider(defaultThemeName: "Light", themes: [
                  {"Light": ThemeData.light()},
                  {"Dark": ThemeData.dark()}
                ])),
      ],
      child: Consumer<ThemeProvider>(
        builder: (context, theme, child) => MaterialApp(
          home: ThemeChangeScreen(),
          theme: theme.getTheme(),
        ),
      ),
    );
  }
}

class ThemeChangeScreen extends StatelessWidget {
  const ThemeChangeScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Home Page"),
      ),
      body: Center(
        child: Consumer<ThemeProvider>(
          builder: (context, theme, child) => PopupMenuButton<dynamic>(
            offset: Offset(100, 0),
            child: ListTile(
              leading: const Icon(Icons.brush),
              title: const Text(
                "Theme",
                style: TextStyle(fontFamily: "Poppins"),
              ),
              subtitle: Text(
                "${theme.getThemeName()}",
                style: TextStyle(fontFamily: "Poppins"),
              ),
              trailing: Icon(Icons.edit),
            ),
            itemBuilder: (context) => theme.getThemeNames
                .map((item) => PopupMenuItem(
                      value: item,
                      child: Text(item),
                      onTap: () => theme.setTheme(item),
                    ))
                .toList(),
          ),
        ),
      ),
    );
  }
}
4
likes
120
pub points
53%
popularity

Publisher

verified publisherniamulhasan.me

A simple theme chenging plugin for flutter made top of provider

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter, provider, shared_preferences

More

Packages that depend on flutter_theme_provider