Flutter颜色选择器插件iglu_color_picker_flutter的使用

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

Flutter颜色选择器插件iglu_color_picker_flutter的使用

插件简介

Iglu Color Picker Flutter Logo

pub package style: very good analysis License: MIT

这是一个高度可定制的颜色选择器,专为Flutter开发。它由 IGLU 团队用心打造。

快速开始 🚀

iglu_color_picker_flutter 提供了三种类型的小部件:

  • Color Picker:用于选择颜色。
  • Hue Ring Picker:用于通过环形滑块选择色调。
  • Slider Picker:用于通过滑块选择颜色。

Color Picker

Color Picker

IGColorPicker(
  paletteType: IGPaletteType.hsvWithHue,
  onColorChanged: (color) {
    // Do something with color
  },
)

Hue Ring Picker

Hue Ring Picker

IGHueRingPicker(
  onColorChanged: (color) {
    // Do something with color
  },
)

Slider Picker

Slider Picker

IGSlidePicker(
  onColorChanged: (color) {
    // Do something with color
  },
)

示例代码

下面是一个完整的示例应用程序,展示了如何在Flutter项目中使用 iglu_color_picker_flutter

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

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

class ColorPickerExample extends StatelessWidget {
  const ColorPickerExample({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Color Picker Flutter Example',
      theme: ThemeData(
        useMaterial3: true,
      ),
      home: const ColorPickerExampleHome(),
    );
  }
}

class ColorPickerExampleHome extends StatefulWidget {
  const ColorPickerExampleHome({super.key});

  @override
  State<ColorPickerExampleHome> createState() => _ColorPickerExampleHomeState();
}

class _ColorPickerExampleHomeState extends State<ColorPickerExampleHome> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Color Picker'),
        shadowColor: Colors.black,
      ),
      body: ListView.separated(
        itemBuilder: (context, index) {
          if (index == 0 || index == 1) {
            return Container(
              height: 44,
              margin: const EdgeInsets.fromLTRB(20, 0, 0, 0),
              child: InkWell(
                onTap: () {
                  Navigator.of(context).push(
                    MaterialPageRoute<void>(
                      builder: (BuildContext context) => index == 0
                          ? const HueRingPickerDetail()
                          : const SlidePickerDetail(),
                    ),
                  );
                },
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Text(index == 0 ? 'Hue Ring Picker' : 'Slide Picker'),
                    const Icon(
                      Icons.chevron_right_rounded,
                    )
                  ],
                ),
              ),
            );
          }
          final type = IGPaletteType.values[index - 2];
          return Container(
            height: 44,
            margin: const EdgeInsets.fromLTRB(20, 0, 0, 0),
            child: InkWell(
              onTap: () {
                Navigator.of(context).push(
                  MaterialPageRoute<void>(
                    builder: (BuildContext context) =>
                        ColorPickerDetail(paletteType: type),
                  ),
                );
              },
              child: Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  Text(type.displayName),
                  const Icon(
                    Icons.chevron_right_rounded,
                  )
                ],
              ),
            ),
          );
        },
        separatorBuilder: (context, index) {
          if (index == 0 || index == 1) {
            return Container(
              color: Colors.grey.shade300,
              height: 30,
            );
          }
          return const Divider(
            indent: 20,
            height: 0,
          );
        },
        itemCount: IGPaletteType.values.length + 1,
      ),
    );
  }
}

详细配置参数

Color Picker 参数

参数名 类型 描述
paletteType IGPaletteType 调色板类型
currentColor Color? 当前颜色
onColorChanged ValueChanged<Color>? 颜色变化时的回调函数
historyColorsBuilder Widget Function(List<Color>)? 历史颜色构建器
colorHistory List<Color>? 历史颜色列表
padding EdgeInsetsGeometry? 整体视图的内边距
elementSpacing double 元素之间的间距
showSlider bool 是否显示滑块
sliderRadius double? 滑块的半径
sliderBorderColor Color? 滑块的边框颜色
sliderBorderWidth double? 滑块的边框宽度
displayThumbColor bool 是否显示滑块的拇指颜色
enableAlpha bool 是否启用透明度滑块
alphaSliderRadius double? 透明度滑块的半径
alphaSliderBorderColor Color? 透明度滑块的边框颜色
alphaSliderBorderWidth double? 透明度滑块的边框宽度
areaWidth double 区域宽度
areaHeight double? 区域高度
areaRadius double? 区域圆角半径
areaBorderColor Color? 区域边框颜色
areaBorderWidth double? 区域边框宽度
showInputBar bool 是否显示输入栏
inputBarRadius double? 输入栏圆角半径
inputBarBorderColor Color? 输入栏边框颜色
inputBarBorderWidth double? 输入栏边框宽度
inputBarPadding EdgeInsetsGeometry? 输入栏内边距
inputBarDisable bool? 是否禁用输入栏交互
customInputBar Widget Function(Color)? 自定义输入栏
colorDetailsLabelTypes List<IGColorLabelType> 显示的颜色信息标签类型
colorDetailsWidget Widget Function(List<String> hex, List<String> rgb, List<String> hsv, List<String> hsl)? 自定义颜色信息小部件

Hue Ring Picker 参数

参数名 类型 描述
currentColor Color? 当前颜色
onColorChanged ValueChanged<Color>? 颜色变化时的回调函数
displayThumbColor bool 是否显示滑块的拇指颜色
hueRingHeight double 环形滑块的高度
hueRingStrokeWidth double 环形滑块的描边宽度
hueRingBorderColor Color? 环形滑块的边框颜色
hueRingBorderWidth double? 环形滑块的边框宽度
areaRadius double? 区域圆角半径
areaBorderColor Color? 区域边框颜色
areaBorderWidth double? 区域边框宽度
padding EdgeInsetsGeometry? 整体视图的内边距
elementSpacing double 元素之间的间距
enableAlpha bool 是否启用透明度滑块
alphaSliderRadius double? 透明度滑块的半径
alphaSliderBorderColor Color? 透明度滑块的边框颜色
alphaSliderBorderWidth double? 透明度滑块的边框宽度
showInputBar bool 是否显示输入栏
inputBarRadius double? 输入栏圆角半径
inputBarBorderColor Color? 输入栏边框颜色
inputBarBorderWidth double? 输入栏边框宽度
inputBarPadding EdgeInsetsGeometry? 输入栏内边距
inputBarDisable bool? 是否禁用输入栏交互
customInputBar Widget Function(Color)? 自定义输入栏
colorDetailsLabelTypes List<IGColorLabelType> 显示的颜色信息标签类型
colorDetailsWidget Widget Function(List<String> hex, List<String> rgb, List<String> hsv, List<String> hsl)? 自定义颜色信息小部件

Slider Picker 参数

参数名 类型 描述
currentColor Color? 当前颜色
onColorChanged ValueChanged<Color>? 颜色变化时的回调函数
colorModel IGColorModel 颜色模型(RGB, HSL, HSV)
showColorIndicator bool 是否显示颜色指示器
colorIndicatorHeight double? 颜色指示器高度
colorIndicatorBorderColor Color? 颜色指示器边框颜色
colorIndicatorBorderWidth double? 颜色指示器边框宽度
colorIndicatorRadius double? 颜色指示器圆角半径
colorIndicatorAlignmentBegin AlignmentGeometry 颜色指示器对齐开始位置
colorIndicatorAlignmentEnd AlignmentGeometry 颜色指示器对齐结束位置
showSlider bool 是否显示滑块
showSliderParams bool 是否显示滑块参数
showSliderText bool 是否显示滑块文本
sliderRadius double? 滑块的半径
sliderBorderColor Color? 滑块的边框颜色
sliderBorderWidth double? 滑块的边框宽度
sliderTextStyle TextStyle? 滑块文本样式
displayThumbColor bool 是否显示滑块的拇指颜色
enableAlpha bool 是否启用透明度滑块
alphaSliderRadius double? 透明度滑块的半径
alphaSliderBorderColor Color? 透明度滑块的边框颜色
alphaSliderBorderWidth double? 透明度滑块的边框宽度
padding EdgeInsetsGeometry? 整体视图的内边距
elementSpacing double 元素之间的间距
colorDetailsLabelTypes List<IGColorLabelType> 显示的颜色信息标签类型
colorDetailsWidget Widget Function(List<String> hex, List<String> rgb, List<String> hsv, List<String> hsl)? 自定义颜色信息小部件

更多详细信息请参考 官方GitHub仓库 中的文档和示例。


更多关于Flutter颜色选择器插件iglu_color_picker_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter颜色选择器插件iglu_color_picker_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 iglu_color_picker_flutter 插件的示例代码。这个插件允许你在Flutter应用中集成一个颜色选择器。

首先,确保你的 pubspec.yaml 文件中已经添加了 iglu_color_picker_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  iglu_color_picker_flutter: ^版本号  # 请替换为当前最新版本号

然后运行 flutter pub get 来获取依赖。

接下来,你可以在你的 Flutter 应用中使用这个颜色选择器。以下是一个简单的示例,展示了如何集成并使用 iglu_color_picker_flutter

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

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

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

class ColorPickerDemo extends StatefulWidget {
  @override
  _ColorPickerDemoState createState() => _ColorPickerDemoState();
}

class _ColorPickerDemoState extends State<ColorPickerDemo> {
  Color selectedColor = Colors.black;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Color Picker Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Container(
              width: 100,
              height: 100,
              color: selectedColor,
              margin: EdgeInsets.all(20),
            ),
            ElevatedButton(
              onPressed: () {
                showDialog(
                  context: context,
                  builder: (context) {
                    return AlertDialog(
                      title: Text('Select Color'),
                      content: SingleChildScrollView(
                        child: ColorPicker(
                          pickerColor: selectedColor,
                          onColorChanged: (Color color) {
                            setState(() {
                              selectedColor = color;
                            });
                            Navigator.of(context).pop();
                          },
                          showLabel: true,
                          pickerAreaHeightPercent: 0.8,
                        ),
                      ),
                    );
                  },
                );
              },
              child: Text('Choose Color'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个 MyApp 应用程序,其中包含 ColorPickerDemo 作为主页面。
  2. ColorPickerDemo 是一个有状态的组件,它包含一个 selectedColor 状态变量,用于存储用户选择的颜色。
  3. build 方法中,我们构建了一个简单的 UI,其中包含一个显示所选颜色的容器和一个按钮。
  4. 当用户点击按钮时,会显示一个对话框,对话框中包含一个 ColorPicker 小部件。
  5. ColorPicker 小部件允许用户选择颜色,当用户选择颜色时,会调用 onColorChanged 回调,更新 selectedColor 状态并关闭对话框。

这个示例展示了如何集成 iglu_color_picker_flutter 插件并处理颜色选择事件。你可以根据需要进一步自定义和扩展这个示例。

回到顶部