dotup_flutter_themed 3.0.0 copy "dotup_flutter_themed: ^3.0.0" to clipboard
dotup_flutter_themed: ^3.0.0 copied to clipboard

Easy Flutter Themes

flutter License: GPL v3 forks stars

dotup_flutter_themed #

Easy Flutter themes - Extend your themes with custom theme data

Easy usage #

// Powered by https://dotup.de
// Copyright (c) 2021, dotup IT solutions - Peter Ullrich


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

  @override
  Widget build(BuildContext context) {
    return ThemeBuilder(
      // Provide your theme data
      data: ThemeQueryData(
        dark: ThemeData.dark(),
        light: ThemeData.light(),
      ),
      builder: (dark, light, themeMode) {
        // Get your theme from builder
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          darkTheme: dark,
          theme: light,
          themeMode: themeMode,
          home: const ThemedHome(),
        );
      },
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        actions: [
          IconButton(
              onPressed: () {
                // Toggle theme mode
                final x = ThemeQuery.of<ThemeQueryData>(context);
                x.toggleThemeMode();
              },
              icon: const Icon(Icons.dark_mode)),
        ],
      ),
      body: Center(
        child: Column(
          children: const [
            Text('Nice!'),
            Text('https://flutter-apps.ml'),
          ],
        ),
      ),
    );
  }
}

Advanced usage #

Extend your themes with custom theme data

// Powered by https://dotup.de
// Copyright (c) 2021, dotup IT solutions - Peter Ullrich


// Define what you want additionally in dark and light theme
class MyThemeExtensions {
  late Color brandColor;

  MyThemeExtensions({
    Color? brandColor,
  }) : brandColor = brandColor ?? Colors.green.shade400;
}

// Define your own theme query data for easy access
class MyTheme extends CustomThemeQueryData<MyThemeExtensions> {
  MyTheme({
    required ThemeData dark,
    required ThemeData light,
    ThemeMode themeMode = ThemeMode.dark,
  }) : super(
          dark: dark,
          light: light,
          themeMode: themeMode,
          darkCustom: MyThemeExtensions(brandColor: Colors.blue.shade400),
          lightCustom: MyThemeExtensions(brandColor: Colors.white70),
        );

  static MyTheme of(BuildContext context) {
    return ThemeQuery.of<MyTheme>(context);
  }
}

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

  @override
  Widget build(BuildContext context) {
    return ThemeBuilder<MyTheme>(
      // Provide your theme data
      data: MyTheme(
        dark: ThemeData.dark(),
        light: ThemeData.light(),
      ),
      builder: (dark, light, themeMode) {
        // Get your theme from builder
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          darkTheme: dark,
          theme: light,
          themeMode: themeMode,
          home: const ThemedHome(),
        );
      },
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        actions: [
          IconButton(
              onPressed: () {
                // Toggle theme mode
                final x = MyTheme.of(context);
                x.toggleThemeMode();
              },
              icon: Icon(
                Icons.language,
                // Get your custom value for the current theme mode
                color: MyTheme.of(context).custom.brandColor,
              )),
        ],
      ),
      body: Center(
        child: Column(
          children: const [
            Text('Nice!'),
            Text('https://flutter-apps.ml'),
          ],
        ),
      ),
    );
  }
}

Install #

flutter pub add dotup_flutter_themed

dotup_flutter_themed on pub.dev #

Other widgets on pub.dev #

Other open source flutter projects on Github #

Other open source dart projects on Github #

Flutter simulator | DFFP3 #

Go to https://flutter-apps.ml and check out the awesome flutter simulator !

Flutter simulator

dotup IT solutions #