Flutter颜色管理插件eva_color的使用
Flutter颜色管理插件eva_color的使用
EVA COLOR 是一个为 Flutter 应用程序生成 EVA 设计系统配色方案的简单工具,它通过从 EVA 主题 JSON 文件中生成 Dart 文件来实现。
注意:Eva Design 是 Akveo LLC 的商标。
安装
-
在
pubspec.yaml
文件的dev_dependencies
中添加以下依赖项:eva_color: ^2.0.0 # 支持 null 安全
-
运行命令以更新依赖项:
$ flutter pub get
功能
生成器。此库可以轻松生成颜色常量。有一个命令可以从 Eva 主题 JSON 文件生成 Dart 文件。生成的 Dart 文件将导入用户纯 Color
类。
Dart 颜色方案生成器
- 准备文件
custom-theme.json
,该文件从 Eva 颜色网站导出。默认位置在您的 Flutter 项目的根目录。 - 在命令行中运行
flutter pub run eva_color:generate
。 - 默认输出文件将放置在
lib/eva_color.dart
。参见下文选项以进行自定义。 - 示例命令:
flutter pub run eva_color:generate -i assets/my-app-color.json -o lib/config/color.dart -c AppColor
生成器选项(命令行参数)
-i 或 --input : 定义输入文件,可以使用相对路径或绝对路径。默认为 ${PROJECT_DIR}/custom-theme.json
-o 或 --output : 定义输出文件,可以使用相对路径或绝对路径。默认为 ${PROJECT_DIR}/lib/eva_colors.dart
-c 或 --class : 定义生成的颜色方案类名。默认为 EvaColors
使用
以下是您如何在项目中使用颜色的方法。
- 假设输出文件位于
/lib/eva_colors.dart
,并且类默认为EvaColors
。 - 示例输出。
import 'dart:ui'; // [@autogenerate](/user/autogenerate) DO NOT EDIT!!! class EvaColors { static const Color primary = Color(0xFF3366FF); static const Color primary100 = Color(0xFFD6E4FF); static const Color primary200 = Color(0xFFADC8FF); static const Color primary300 = Color(0xFF84A9FF); static const Color primary400 = Color(0xFF6690FF); static const Color primary500 = Color(0xFF3366FF); static const Color primary600 = Color(0xFF254EDB); static const Color primary700 = Color(0xFF1939B7); static const Color primary800 = Color(0xFF102693); static const Color primary900 = Color(0xFF091A7A); // 其他颜色调色板在这里 }
- 导入生成的文件到所需的页面。
import 'eva_colors.dart'; // 或者使用绝对路径导入
- 使用颜色方案通过其名称
EvaColors.primary
来获取主要色调,或者更浅或更深的色调,如EvaColors.primary100
。Widget container = Container( color: EvaColors.primary, );
提示
基本颜色
默认情况下,基本颜色不是由 Eva 颜色生成器生成的 JSON 文件提供的。因为这些颜色可能在大多数应用程序中都需要,所以此库会默认自动为基本颜色生成常量,使用来自官方 Sketch 文件的颜色方案。如果您想要自定义基本颜色,必须在输入文件中提供所有必需的调色板。缺少任何一个,生成器将抛出错误。
"color-basic-100": "#FFFFFF",
"color-basic-200": "#F7F9FC",
"color-basic-300": "#EDF1F7",
"color-basic-400": "#E4E9F2",
"color-basic-500": "#C5CEE0",
"color-basic-600": "#8F9BB3",
"color-basic-700": "#2E3A59",
"color-basic-800": "#222B45",
"color-basic-900": "#192038",
"color-basic-1000": "#151A30",
"color-basic-1100": "#101426",
颜色调色板
如果您想添加更多的 EVA 颜色调色板,只需在 custom-theme.json
文件中添加即可。例如,添加带有色调的强调颜色:
"color-accent-100": "#D6E4FF",
"color-accent-200": "#ADC8FF",
"color-accent-300": "#84A9FF",
"color-accent-400": "#6690FF",
"color-accent-500": "#3366FF",
"color-accent-600": "#254EDB",
"color-accent-700": "#1939B7",
"color-accent-800": "#102693",
"color-accent-900": "#091A7A",
示例代码
import 'package:eva_color/eva_color.dart';
import 'package:flutter/material.dart';
// 输出示例
class EvaColors {
static const EvaColor primary = EvaColor(0xFF3366FF, {
100: Color(0xFFD6E4FF),
200: Color(0xFFADC8FF),
300: Color(0xFF84A9FF),
400: Color(0xFF6690FF),
500: Color(0xFF3366FF),
600: Color(0xFF254EDB),
700: Color(0xFF1939B7),
800: Color(0xFF102693),
900: Color(0xFF091A7A),
});
}
// 使用 Material Design
Widget container = Container(
color: EvaColors.primary.shade200,
);
更多关于Flutter颜色管理插件eva_color的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter颜色管理插件eva_color的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用eva_colors
插件来进行颜色管理的代码示例。eva_colors
插件通常用于管理Eva Design System中的颜色,这在开发使用Eva Design System的应用时非常有用。
首先,确保你已经在pubspec.yaml
文件中添加了eva_colors
依赖:
dependencies:
flutter:
sdk: flutter
eva_icons_flutter: ^3.0.0 # 假设你也使用Eva Icons
eva_colors: ^2.0.0 # 确保使用最新版本
然后,运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter应用中使用这些颜色。以下是一个简单的示例,展示如何导入并使用eva_colors
中的颜色:
import 'package:flutter/material.dart';
import 'package:eva_colors/eva_colors.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Eva Colors Demo',
theme: ThemeData(
// 使用Eva Colors中的颜色来设置主题
primarySwatch: EvaColors.indigo,
primaryColor: EvaColors.blue500,
accentColor: EvaColors.pink400,
scaffoldBackgroundColor: EvaColors.gray100,
textTheme: TextTheme(
headline1: TextStyle(color: EvaColors.dark),
bodyText1: TextStyle(color: EvaColors.gray800),
),
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Eva Colors Usage'),
backgroundColor: EvaColors.blue500, // 使用Eva Colors中的颜色
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Hello, Eva Colors!',
style: TextStyle(color: EvaColors.white, fontSize: 24),
),
SizedBox(height: 20),
Container(
width: 100,
height: 100,
color: EvaColors.green400, // 使用Eva Colors中的颜色
child: Center(
child: Text(
'Green Box',
style: TextStyle(color: EvaColors.white),
),
),
),
],
),
),
);
}
}
在这个示例中,我们做了以下几件事:
- 导入
eva_colors
包。 - 在
MaterialApp
的theme
属性中使用Eva Colors中的颜色来设置主题颜色。 - 在
AppBar
和Container
中使用Eva Colors中的颜色。
这样,你就可以在你的Flutter应用中方便地使用Eva Design System中的颜色了。确保你查看eva_colors
包的文档,以获取所有可用颜色的列表和更多使用示例。