shader_theme_switcher 0.0.11 copy "shader_theme_switcher: ^0.0.11" to clipboard
shader_theme_switcher: ^0.0.11 copied to clipboard

A Flutter package for creating beautiful, shader-driven theme transitions (shockwave effect).

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:shader_theme_switcher/shader_theme_switcher.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    final lightTheme = ThemeData(
      useMaterial3: true,
      colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
      brightness: Brightness.light,
    );

    return ShaderTheme(
      initTheme: lightTheme,
      builder: (context, theme) {
        return MaterialApp(
          title: 'Shader Theme Switcher Demo',
          theme: theme,
          debugShowCheckedModeBanner: false,
          home: const ThemeShockWaveArea(
            config: ShockwaveConfig.gentle,
            duration: Duration(milliseconds: 1000),
            child: MyHomePage(),
          ),
        );
      },
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    final isDark = Theme.of(context).brightness == Brightness.dark;

    return Scaffold(
      appBar: AppBar(title: const Text('Shader Theme Switcher')),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ThemeSwitcherPoint(
              builder: (context, changeTheme) {
                return IconButton(
                  icon: Icon(isDark ? Icons.light_mode : Icons.dark_mode),
                  onPressed: () {
                    final newTheme = isDark
                        ? ThemeData(
                            useMaterial3: true,
                            colorScheme: ColorScheme.fromSeed(
                              seedColor: Colors.blue,
                            ),
                            brightness: Brightness.light,
                          )
                        : ThemeData(
                            useMaterial3: true,
                            colorScheme: ColorScheme.fromSeed(
                              seedColor: Colors.blue,
                              brightness: Brightness.dark,
                            ),
                            brightness: Brightness.dark,
                          );

                    changeTheme(theme: newTheme);
                  },
                );
              },
            ),
            const SizedBox(height: 20),

            Card(
              child: Padding(
                padding: const EdgeInsets.all(16.0),
                child: Text(
                  'Current Theme: ${isDark ? "Dark" : "Light"}',
                  style: Theme.of(context).textTheme.headlineSmall,
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
3
likes
160
points
320
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for creating beautiful, shader-driven theme transitions (shockwave effect).

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, flutter_shaders

More

Packages that depend on shader_theme_switcher