app_theme_kit 0.0.10
app_theme_kit: ^0.0.10 copied to clipboard
A modular Flutter theming kit with light/dark mode, color schemes, text themes, and Material 3 subthemes.
๐ฆ app_theme_kit #
A reusable Material 3 theme package for Flutter apps with customizable color schemes, text styles, subthemes, and spacing constants.
Quickly set up consistent colors, typography, spacing, and component themes across your Flutter applications.
โจ Features #
- ๐จ Customizable color system via
AppColors - ๐ Light & Dark themes (developer-defined colors)
- ๐ค Custom TextTheme using Google Fonts (Quicksand)
- ๐ Design tokens: spacing, radius, elevation
- ๐ Subthemes included:
- AppBarTheme
- CardTheme
- TabBarTheme
- NavigationBarTheme
- BottomAppBarTheme
- ๐งฑ Material 3 support
- ๐งช Example app included (with Light/Dark switch toggle)
๐ Installation #
Add to your pubspec.yaml:
dependencies:
app_theme_kit: ^0.0.9+1
Then run:
flutter pub get
๐ Usage #
Import the package:
import 'package:app_theme_kit/app_theme_kit.dart';
๐จ Define Your Own Colors #
You are not forced to use static colors from the package.
Define your brand colors and inject them into the theme.
final lightColors = AppColors(
primary: Colors.teal,
secondary: Colors.orange,
background: Colors.white,
surface: Colors.grey.shade50,
error: Colors.redAccent,
);
final darkColors = AppColors(
primary: Colors.teal.shade200,
secondary: Colors.orange.shade200,
background: const Color(0xFF121212),
surface: const Color(0xFF1E1E1E),
error: Colors.red.shade300,
);
๐งฑ Apply Theme to Your App #
MaterialApp(
title: 'My App',
theme: AppTheme.light(colors: lightColors),
darkTheme: AppTheme.dark(colors: darkColors),
themeMode: ThemeMode.system,
home: const HomePage(),
);
๐ Light / Dark Toggle (Example App) #
The example app demonstrates switching themes using a Switch widget:
Switch(
value: isDarkMode,
onChanged: (value) => isDarkModeNotifier.value = value,
);
This keeps theme control inside the application, not inside the package.
๐ค Typography Showcase #
Text("Display Large", style: Theme.of(context).textTheme.displayLarge),
Text("Title Medium", style: Theme.of(context).textTheme.titleMedium),
Text("Body Medium", style: Theme.of(context).textTheme.bodyMedium),
โ All text styles use GoogleFonts.quicksand by default.
๐งฉ Subthemes #
- Cards
Card(
child: Padding(
padding: const EdgeInsets.all(AppSpacing.md),
child: Text("Styled by AppCardTheme"),
),
);
- TabBar
DefaultTabController(
length: 2,
child: Scaffold(
appBar: AppBar(
bottom: const TabBar(
tabs: [Tab(text: "One"), Tab(text: "Two")],
),
),
),
);
- NavigationBar
NavigationBar(
selectedIndex: 0,
destinations: const [
NavigationDestination(icon: Icon(Icons.home), label: "Home"),
NavigationDestination(icon: Icon(Icons.settings), label: "Settings"),
],
);
- BottomAppBar
Scaffold(
bottomNavigationBar: BottomAppBar(
child: Padding(
padding: const EdgeInsets.all(AppSpacing.md),
child: Text(
"This BottomAppBar uses AppBottomAppBarTheme",
textAlign: TextAlign.center,
),
),
),
);
๐ Design Tokens (Spacing & Radius) #
Padding(
padding: const EdgeInsets.all(AppSpacing.md),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(AppSpacing.radiusMd),
color: AppColors.cardBg,
),
child: const Text("Consistent spacing & radius"),
),
);
โ
Use AppSpacing for padding, margins, radius, and elevation to keep your UI consistent.
๐ฒ Example App #
An example app is included in the /example folder.
Run it with:
cd example
flutter run
It demonstrates:
- Light/Dark themes
- Typography styles
- Cards, TabBar, NavigationBar, BottomAppBar
- Spacing tokens in action
๐ท Screenshots #
Typography #

Home #

Settings #

Dark mode #

๐ค Contributing #
Contributions are welcome!
- Open issues for bugs/features
- Submit PRs with improvements
- Share ideas in Discussions
๐ License #
This project is licensed under the MIT License.
See LICENSE for details.