Flutter颜色渐变生成插件color_shade的使用
Flutter颜色渐变生成插件color_shade的使用
概述
color_shade
是一个扩展 Color
类的包,用于从主色调生成各种色调。
使用
要使用该插件,只需导入包即可。色调可以从50到900不等,这与 Material Design 中的颜色类似。
导入插件
import 'package:color_shade/color_shade.dart';
访问色调
以下是如何访问不同色调的例子:
const primaryColor = Color(0xFFFFEB3B); // 黄色
// 获取不同色调
primaryColor.shade50;
primaryColor.shade100;
primaryColor.shade200;
primaryColor.shade300;
primaryColor.shade400;
primaryColor.shade500;
primaryColor.shade600;
primaryColor.shade700;
primaryColor.shade800;
primaryColor.shade900;
将色调应用于主题
可以将颜色的色调传递给 ThemeData
的 primarySwatch
属性。
MaterialApp(
title: 'ColorShade Demo',
theme: ThemeData(
primarySwatch: const Color(0xFFFFEB3B).swatch,
),
home: HomePage(),
)
完整示例
下面是一个完整的示例代码,展示了如何在 Flutter 应用程序中使用 color_shade
插件来切换主题并展示不同色调的应用。
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](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool _isDarkTheme = false;
void _toggleTheme() {
setState(() {
_isDarkTheme = !_isDarkTheme;
});
}
[@override](/user/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](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
[@override](/user/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(
'你已经点击按钮次数:',
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: '切换深色/浅色模式',
child: const Icon(Icons.dark_mode),
),
const SizedBox(width: 8),
FloatingActionButton(
onPressed: _incrementCounter,
tooltip: '增加',
child: const Icon(Icons.add),
)
],
),
);
}
}
更多关于Flutter颜色渐变生成插件color_shade的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复