Flutter颜色渐变生成插件color_shade的使用

发布于 1周前 作者 itying888 来自 Flutter

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;

将色调应用于主题

可以将颜色的色调传递给 ThemeDataprimarySwatch 属性。

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 回复

更多关于Flutter颜色渐变生成插件color_shade的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用color_shade插件来生成颜色渐变的示例代码。color_shade插件允许你根据给定的基础颜色生成不同亮度和饱和度的颜色渐变。

首先,你需要在pubspec.yaml文件中添加color_shade依赖:

dependencies:
  flutter:
    sdk: flutter
  color_shade: ^latest_version  # 请替换为最新的版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中使用color_shade来生成颜色渐变。以下是一个完整的示例代码,展示了如何使用这个插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Color Shade Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: ColorShadeExample(),
    );
  }
}

class ColorShadeExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 基础颜色
    Color baseColor = Colors.blue;

    // 生成颜色渐变
    List<Color> shades = generateColorShades(baseColor, 10);

    return Scaffold(
      appBar: AppBar(
        title: Text('Color Shade Example'),
      ),
      body: GridView.builder(
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 2,
          crossAxisSpacing: 8,
          mainAxisSpacing: 8,
        ),
        itemCount: shades.length,
        itemBuilder: (context, index) {
          return Container(
            color: shades[index],
            child: Center(
              child: Text(
                'Shade ${index + 1}',
                style: TextStyle(color: Colors.white),
              ),
            ),
          );
        },
      ),
    );
  }

  // 生成颜色渐变的函数
  List<Color> generateColorShades(Color baseColor, int numberOfShades) {
    List<Color> shades = [];
    for (int i = 0; i < numberOfShades; i++) {
      double percentage = i / (numberOfShades - 1.0);
      Color shadeColor = ColorShade.shadeColor(baseColor, percentage: percentage);
      shades.add(shadeColor);
    }
    return shades;
  }
}

在上面的代码中,我们做了以下几件事:

  1. pubspec.yaml文件中添加了color_shade依赖。
  2. ColorShadeExample类中定义了一个基础颜色baseColor
  3. 使用generateColorShades函数生成了一系列基于baseColor的颜色渐变。这个函数接受基础颜色和渐变的数量作为参数,然后使用一个循环生成颜色渐变,并将它们存储在一个列表中。
  4. 使用GridView.builder在UI中显示生成的颜色渐变。

注意:ColorShade.shadeColor方法中的percentage参数决定了生成的颜色的亮度变化。percentage的值范围从0到1,其中0表示最暗的渐变,1表示最亮的渐变。

这个示例展示了如何使用color_shade插件生成和显示颜色渐变。你可以根据自己的需求调整基础颜色、渐变的数量以及显示方式。

回到顶部