flutter_theme_orchestrator 0.1.2 copy "flutter_theme_orchestrator: ^0.1.2" to clipboard
flutter_theme_orchestrator: ^0.1.2 copied to clipboard

A powerful Flutter theme management system with support for dynamic colors, theme scheduling, transitions, and persistence.

Flutter Theme Orchestrator #

A powerful Flutter theme management system with support for dynamic colors, theme scheduling, transitions, and persistence.

pub package

Preview #

Theme Orchestrator Preview

Features #

  • 🎨 Dynamic Colors Support: Seamlessly integrate with Material You/Dynamic Colors
  • πŸ“… Theme Scheduling: Schedule theme changes based on time or events
  • πŸ”„ Smooth Transitions: Beautiful animations when switching between themes
  • πŸ’Ύ Theme Persistence: Save and restore theme preferences
  • 🎯 Type-safe: Fully typed API for better development experience
  • πŸ“± Platform Support: Works on Android, iOS, Web, Desktop

Getting Started #

Add the package to your pubspec.yaml:

dependencies:
  flutter_theme_orchestrator: ^0.1.1

Usage #

Basic Setup #

import 'package:flutter_theme_orchestrator/flutter_theme_orchestrator.dart';

void main() {
  runApp(
    ThemeOrchestrator(
      child: MyApp(),
      initialTheme: ThemeData.light(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeOrchestrator.of(context).currentTheme,
      darkTheme: ThemeOrchestrator.of(context).darkTheme,
      themeMode: ThemeOrchestrator.of(context).themeMode,
      home: MyHomePage(),
    );
  }
}

Dynamic Theme Switching #

// Switch theme with smooth transition
ThemeOrchestrator.of(context).setTheme(ThemeData.dark());

// Toggle between light and dark
ThemeOrchestrator.of(context).toggleTheme();

// With custom transition duration
ThemeOrchestrator.of(context).setTheme(
  ThemeData.dark(),
  duration: Duration(milliseconds: 500),
);

Theme Scheduling #

// Schedule dark theme from 8 PM to 6 AM
ThemeOrchestrator.of(context).scheduleTheme(
  ThemeSchedule(
    startTime: TimeOfDay(hour: 20, minute: 0),
    endTime: TimeOfDay(hour: 6, minute: 0),
    theme: ThemeData.dark(),
  ),
);

// Schedule multiple themes
ThemeOrchestrator.of(context).scheduleThemes([
  ThemeSchedule(
    startTime: TimeOfDay(hour: 6, minute: 0),
    endTime: TimeOfDay(hour: 17, minute: 0),
    theme: ThemeData.light(),
  ),
  ThemeSchedule(
    startTime: TimeOfDay(hour: 17, minute: 0),
    endTime: TimeOfDay(hour: 20, minute: 0),
    theme: eveningTheme,
  ),
  ThemeSchedule(
    startTime: TimeOfDay(hour: 20, minute: 0),
    endTime: TimeOfDay(hour: 6, minute: 0),
    theme: ThemeData.dark(),
  ),
]);

Dynamic Colors #

// Enable dynamic colors (Material You)
ThemeOrchestrator.of(context).setDynamicColorsEnabled(true);

// Create theme with dynamic colors
final theme = ThemeOrchestrator.of(context).createTheme(
  primaryColor: Colors.blue,
  useDynamicColors: true,
);

Theme Persistence #

// Save current theme state
await ThemeOrchestrator.of(context).saveThemeState();

// Restore saved theme state
await ThemeOrchestrator.of(context).restoreThemeState();

// Custom storage implementation
class MyCustomStorage extends ThemeStorage {
  @override
  Future<ThemeState?> loadThemeState() async {
    // Implement your loading logic
  }

  @override
  Future<void> saveThemeState(ThemeState state) async {
    // Implement your saving logic
  }
}

// Use custom storage
ThemeOrchestrator(
  storage: MyCustomStorage(),
  child: MyApp(),
);

Example App #

Check out the example folder for a complete demo app showcasing all features:

Example App Preview

The example app demonstrates:

  • Dynamic theme switching with animations
  • Material You integration
  • Theme scheduling
  • Theme persistence
  • Custom theme configurations
  • Platform-specific adaptations

Advanced Usage #

For detailed documentation and advanced usage examples, visit our Wiki.

Contributing #

Contributions are welcome! Please read our contributing guidelines to get started.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

4
likes
135
points
52
downloads

Publisher

unverified uploader

Weekly Downloads

A powerful Flutter theme management system with support for dynamic colors, theme scheduling, transitions, and persistence.

Documentation

API reference

License

MIT (license)

Dependencies

cupertino_icons, dynamic_color, flutter, flutter_animate, json_annotation, path_provider, provider, rxdart, shared_preferences

More

Packages that depend on flutter_theme_orchestrator