Flutter颜色选择器插件iglu_color_picker_flutter的使用
Flutter颜色选择器插件iglu_color_picker_flutter的使用
插件简介
这是一个高度可定制的颜色选择器,专为Flutter开发。它由 IGLU 团队用心打造。
快速开始 🚀
iglu_color_picker_flutter
提供了三种类型的小部件:
- Color Picker:用于选择颜色。
- Hue Ring Picker:用于通过环形滑块选择色调。
- Slider Picker:用于通过滑块选择颜色。
Color Picker
IGColorPicker(
paletteType: IGPaletteType.hsvWithHue,
onColorChanged: (color) {
// Do something with color
},
)
Hue Ring Picker
IGHueRingPicker(
onColorChanged: (color) {
// Do something with color
},
)
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
更多关于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'),
),
],
),
),
);
}
}
在这个示例中:
- 我们创建了一个
MyApp
应用程序,其中包含ColorPickerDemo
作为主页面。 ColorPickerDemo
是一个有状态的组件,它包含一个selectedColor
状态变量,用于存储用户选择的颜色。- 在
build
方法中,我们构建了一个简单的 UI,其中包含一个显示所选颜色的容器和一个按钮。 - 当用户点击按钮时,会显示一个对话框,对话框中包含一个
ColorPicker
小部件。 ColorPicker
小部件允许用户选择颜色,当用户选择颜色时,会调用onColorChanged
回调,更新selectedColor
状态并关闭对话框。
这个示例展示了如何集成 iglu_color_picker_flutter
插件并处理颜色选择事件。你可以根据需要进一步自定义和扩展这个示例。