easy_theme_extension 0.0.1-dev.8 copy "easy_theme_extension: ^0.0.1-dev.8" to clipboard
easy_theme_extension: ^0.0.1-dev.8 copied to clipboard

A zero-boilerplate code generator for Flutter ThemeExtension classes.

example/lib/main.dart

import 'package:easy_theme_extension/easy_theme_extension.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';

part 'main.theme.g.dart';

@easyTheme
abstract class _AppColors {
  Color get primary;
  Color get textColor;
}

@EasyTheme(contextExtensionName: 'theme')
abstract class _MyTheme {
  EdgeInsets get padding => const .all(4);
  LinearGradient get gradient => const .new(colors: [Colors.blue, Colors.cyan]);
}

void main() => runApp(const MainApp());

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        extensions: const [
          MyTheme.$default, // instance with default values
          AppColors(
            primary: Colors.blue,
            textColor: Colors.lightBlue,
          ),
        ],
      ),
      home: Scaffold(
        body: Center(
          child: Builder(
            builder: (context) {
              return Text(
                'Hello World!',
                style: TextStyle(
                  // context extension
                  color: context.appColors.textColor,
                ),
              );
            },
          ),
        ),
      ),
    );
  }
}
0
likes
160
points
326
downloads

Publisher

verified publisheralbinpk.dev

Weekly Downloads

A zero-boilerplate code generator for Flutter ThemeExtension classes.

Repository (GitHub)
View/report issues
Contributing

Topics

#theming #theme-extension #code-generation #build-runner #source-gen

Documentation

API reference

License

MIT (license)

Dependencies

meta

More

Packages that depend on easy_theme_extension