插件介绍

css_colors 是一个简单但实用的 Flutter 包,它为开发者提供了一套完整的 CSS 颜色常量集合。这些颜色常量基于 Dart UI 库中的 Color 类实现,可以直接在 Flutter 应用中使用,包括鸿蒙平台的 Flutter 应用。

该包的主要特点是:

  • 提供了所有标准 CSS 颜色的预定义常量
  • 使用 Flutter 原生的 Color 类,无需额外转换
  • 命名规范遵循 CSS 颜色命名,易于记忆和使用
  • 支持所有 Flutter 平台,包括鸿蒙

通过使用 css_colors 包,开发者可以在应用中直接使用熟悉的 CSS 颜色名称,而无需记住或计算颜色的十六进制值,从而提高开发效率和代码可读性。

如何使用插件

包的引入

由于这是一个为鸿蒙平台定制修改的版本,需要以 git 形式引入。在项目的 pubspec.yaml 文件中添加以下依赖配置:

dependencies:
  css_colors:
    git:
      url: "https://gitcode.com/openharmony-tpc/flutter_packages.git"
      path: "packages/css_colors"

添加依赖后,运行 flutter pub get 命令来获取包:

flutter pub get

导入包

在需要使用 CSS 颜色的 Dart 文件中导入包:

import 'package:css_colors/css_colors.dart';

API 的调用

css_colors 包的使用非常简单直观,它提供了一个 CSSColors 类,该类包含了所有标准 CSS 颜色的静态常量。你可以直接通过类名访问这些颜色常量。

基本用法

// 使用 CSS 颜色常量设置容器背景色
Container(
  color: CSSColors.orange,
  child: const Text('这是一个橙色容器'),
)

// 使用 CSS 颜色常量设置文本颜色
Text(
  '这是蓝色文本',
  style: TextStyle(color: CSSColors.blue),
)

// 使用 CSS 颜色常量设置按钮背景色
ElevatedButton(
  onPressed: () {},
  style: ElevatedButton.styleFrom(
    backgroundColor: CSSColors.green,
  ),
  child: const Text('绿色按钮'),
)

支持的颜色列表

css_colors 包支持所有标准 CSS 颜色,包括但不限于:

  • 基本颜色:red, green, blue, yellow, orange, purple
  • 扩展颜色:lightBlue, darkGreen, deepPink, dodgerBlue
  • 中性颜色:white, black, gray, silver, tan

以下是一些常用颜色的示例:

CSSColors.red        // 红色
CSSColors.green      // 绿色
CSSColors.blue       // 蓝色
CSSColors.yellow     // 黄色
CSSColors.orange     // 橙色
CSSColors.purple     // 紫色
CSSColors.pink       // 粉色
CSSColors.brown      // 棕色
CSSColors.gray       // 灰色
CSSColors.white      // 白色
CSSColors.black      // 黑色

完整示例

以下是一个完整的示例,展示了如何在鸿蒙应用中使用 css_colors 包:

import 'package:flutter/material.dart';
import 'package:css_colors/css_colors.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'CSS Colors Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const ColorExamplePage(),
    );
  }
}

class ColorExamplePage extends StatelessWidget {
  const ColorExamplePage({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('CSS Colors Demo'),
        backgroundColor: CSSColors.darkBlue,
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            // 标题
            Text(
              'CSS 颜色示例',
              style: TextStyle(
                fontSize: 24,
                fontWeight: FontWeight.bold,
                color: CSSColors.darkSlateGray,
              ),
            ),
            const SizedBox(height: 20),

            // 基本颜色示例
            Text(
              '基本颜色:',
              style: TextStyle(
                fontSize: 18,
                fontWeight: FontWeight.bold,
                color: CSSColors.gray,
              ),
            ),
            const SizedBox(height: 10),
            Wrap(
              spacing: 10,
              runSpacing: 10,
              children: [
                _colorBox(CSSColors.red, '红色'),
                _colorBox(CSSColors.green, '绿色'),
                _colorBox(CSSColors.blue, '蓝色'),
                _colorBox(CSSColors.yellow, '黄色'),
                _colorBox(CSSColors.orange, '橙色'),
                _colorBox(CSSColors.purple, '紫色'),
              ],
            ),
            const SizedBox(height: 20),

            // 扩展颜色示例
            Text(
              '扩展颜色:',
              style: TextStyle(
                fontSize: 18,
                fontWeight: FontWeight.bold,
                color: CSSColors.gray,
              ),
            ),
            const SizedBox(height: 10),
            Wrap(
              spacing: 10,
              runSpacing: 10,
              children: [
                _colorBox(CSSColors.lightBlue, '浅蓝色'),
                _colorBox(CSSColors.darkGreen, '深绿色'),
                _colorBox(CSSColors.deepPink, '深粉色'),
                _colorBox(CSSColors.dodgerBlue, '道奇蓝'),
                _colorBox(CSSColors.tomato, '番茄色'),
                _colorBox(CSSColors.limeGreen, '酸橙绿'),
              ],
            ),
            const SizedBox(height: 20),

            // 中性颜色示例
            Text(
              '中性颜色:',
              style: TextStyle(
                fontSize: 18,
                fontWeight: FontWeight.bold,
                color: CSSColors.gray,
              ),
            ),
            const SizedBox(height: 10),
            Wrap(
              spacing: 10,
              runSpacing: 10,
              children: [
                _colorBox(CSSColors.white, '白色', textColor: CSSColors.black),
                _colorBox(CSSColors.black, '黑色'),
                _colorBox(CSSColors.gray, '灰色'),
                _colorBox(CSSColors.silver, '银色'),
                _colorBox(CSSColors.tan, '棕褐色'),
                _colorBox(CSSColors.beige, '米色', textColor: CSSColors.black),
              ],
            ),
          ],
        ),
      ),
      bottomNavigationBar: BottomNavigationBar(
        items: const [
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: '首页',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.color_lens),
            label: '颜色',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.settings),
            label: '设置',
          ),
        ],
        selectedItemColor: CSSColors.purple,
        unselectedItemColor: CSSColors.grey,
        backgroundColor: CSSColors.lightGray,
      ),
    );
  }

  // 颜色方块组件
  Widget _colorBox(Color color, String label, {Color textColor = CSSColors.white}) {
    return Container(
      width: 100,
      height: 100,
      color: color,
      child: Center(
        child: Text(
          label,
          style: TextStyle(
            color: textColor,
            fontWeight: FontWeight.bold,
          ),
          textAlign: TextAlign.center,
        ),
      ),
    );
  }
}

注意事项

  1. 颜色命名css_colors 包中的颜色常量名称遵循 CSS 颜色命名规范,例如 CSSColors.lightBlue 对应 CSS 中的 lightblue 颜色。

  2. 大小写敏感性:虽然 CSS 颜色名称不区分大小写,但在 Dart 中标识符是区分大小写的,因此必须使用正确的大小写形式访问颜色常量。

  3. 灰色变体:包中同时提供了 graygrey 两种拼写形式的灰色系列颜色,它们对应相同的颜色值,开发者可以根据个人偏好选择使用。

  4. 版本兼容性:确保使用与 Flutter SDK 版本兼容的 css_colors 包版本,避免出现兼容性问题。

  5. 自定义颜色:如果需要使用包中未提供的颜色,可以结合 Color 类的其他构造方法创建自定义颜色。

总结

css_colors 是一个简单但实用的 Flutter 包,它为开发者提供了一套完整的 CSS 颜色常量集合,使开发者可以在应用中直接使用熟悉的 CSS 颜色名称。

在鸿蒙平台上使用 css_colors 包,可以:

  1. 提高开发效率:无需记忆或计算颜色的十六进制值
  2. 增强代码可读性:使用直观的颜色名称,使代码更易于理解和维护
  3. 保持设计一致性:确保应用中的颜色与设计规范中的 CSS 颜色一致
  4. 简化跨平台开发:在不同平台上使用相同的颜色代码

通过本文的介绍,你应该已经了解了如何在鸿蒙平台上引入和使用 css_colors 包,以及如何利用其提供的颜色常量来美化你的 Flutter 应用界面。无论是简单的文本颜色设置,还是复杂的 UI 组件配色,css_colors 包都能为你提供便捷的颜色解决方案。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐