color_shade 1.0.1 color_shade: ^1.0.1 copied to clipboard
Extends the Color class to generate shades from the primary color.
import 'package:color_shade/color_shade.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool _isDarkTheme = false;
void _toggleTheme() {
setState(() {
_isDarkTheme = !_isDarkTheme;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'ColorShade Demo',
theme: ThemeData(
brightness: Brightness.light,
useMaterial3: true,
primarySwatch: const Color(0xFFFFEB3B).swatch,
),
darkTheme: ThemeData(
brightness: Brightness.dark,
useMaterial3: true,
primarySwatch: const Color(0xFFFFEB3B).swatch,
),
themeMode: _isDarkTheme ? ThemeMode.dark : ThemeMode.light,
home: MyHomePage(
title: 'ColorShade Demo',
toggleTheme: _toggleTheme,
),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({
super.key,
required this.title,
required this.toggleTheme,
});
final String title;
final VoidCallback toggleTheme;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Theme.of(context).colorScheme.background,
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
style: TextStyle(color: Theme.of(context).colorScheme.primary),
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium?.copyWith(
color: Theme.of(context).colorScheme.primary.shade900),
),
],
),
),
floatingActionButton: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
FloatingActionButton(
onPressed: widget.toggleTheme,
tooltip: 'Dark/Light',
child: const Icon(Icons.dark_mode),
),
const SizedBox(width: 8),
FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
)
],
),
);
}
}