Flutter颜色选择器插件flutter_color_picker_plus的使用
Flutter颜色选择器插件flutter_color_picker_plus的使用
简介
flutter_color_picker_plus
是一个功能强大的颜色选择器插件,支持HSV(HSB)、HSL、RGB和Material颜色选择。它提供了多种颜色选择器样式,如滑块选择器(SlidePicker)、块状选择器(BlockPicker)和Material风格的选择器(MaterialPicker),并且可以根据开发者的需要进行高度定制。
由于原作者不再维护该插件,flutter_color_picker_plus
是从 flutter_colorpicker
叉出来的版本,并由新的维护者继续更新和改进。
快速上手
1. 添加依赖
在 pubspec.yaml
文件中添加 flutter_color_picker_plus
依赖:
dependencies:
flutter_color_picker_plus: ^latest_version
2. 使用示例代码
以下是一个完整的示例代码,展示了如何在Flutter应用中使用 flutter_color_picker_plus
插件。这个示例包括了一个带有多个颜色选择器的页面,用户可以选择不同的颜色,并且可以通过浮动按钮切换主题(白天/黑夜模式)。
import 'package:flutter/material.dart';
import 'package:flutter_color_picker_plus/flutter_color_picker_plus.dart';
void main() => runApp(const MaterialApp(home: MyApp()));
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool lightTheme = true;
Color currentColor = Colors.amber;
List<Color> currentColors = [Colors.yellow, Colors.green];
List<Color> colorHistory = [];
// 当颜色发生变化时调用此方法
void changeColor(Color color) => setState(() => currentColor = color);
// 当多个颜色发生变化时调用此方法
void changeColors(List<Color> colors) =>
setState(() => currentColors = colors);
@override
Widget build(BuildContext context) {
// 根据当前颜色选择白色或黑色作为前景色
final foregroundColor =
useWhiteForeground(currentColor) ? Colors.white : Colors.black;
return AnimatedTheme(
data: lightTheme ? ThemeData.light() : ThemeData.dark(),
child: Builder(builder: (context) {
return DefaultTabController(
length: 3,
child: Scaffold(
floatingActionButton: FloatingActionButton.extended(
onPressed: () => setState(() => lightTheme = !lightTheme),
icon: Icon(lightTheme
? Icons.dark_mode_rounded
: Icons.light_mode_rounded),
label: Text(lightTheme ? 'Night' : ' Day '),
backgroundColor: currentColor,
foregroundColor: foregroundColor,
elevation: 15,
),
appBar: AppBar(
title: const Text('Flutter Color Picker Example'),
backgroundColor: currentColor,
foregroundColor: foregroundColor,
bottom: TabBar(
labelColor: foregroundColor,
tabs: const <Widget>[
Tab(text: 'HSV/HSL/RGB'),
Tab(text: 'Material'),
Tab(text: 'Blocky'),
],
),
),
body: TabBarView(
children: <Widget>[
// HSV/HSL/RGB 颜色选择器
HSVColorPickerExample(
pickerColor: currentColor,
onColorChanged: changeColor,
colorHistory: colorHistory,
onHistoryChanged: (List<Color> colors) =>
colorHistory = colors,
),
// Material 风格的颜色选择器
MaterialColorPickerExample(
pickerColor: currentColor, onColorChanged: changeColor),
// 块状颜色选择器
BlockColorPickerExample(
pickerColor: currentColor,
onColorChanged: changeColor,
pickerColors: currentColors,
onColorsChanged: changeColors,
colorHistory: colorHistory,
),
],
),
),
);
}),
);
}
}
3. 颜色选择器的详细说明
-
HSVColorPickerExample:这是一个基于HSV(色调、饱和度、亮度)的颜色选择器,用户可以通过滑动条来调整颜色。它还支持历史颜色记录,用户可以选择之前使用过的颜色。
-
MaterialColorPickerExample:这是一个Material风格的颜色选择器,用户可以从预定义的颜色集中选择颜色。每个颜色块都带有标签,显示颜色的名称或值。
-
BlockColorPickerExample:这是一个块状颜色选择器,用户可以从多个颜色块中选择颜色。它还支持多选模式,允许用户同时选择多个颜色。
4. 显示颜色选择器的对话框
你也可以通过 showDialog
来显示颜色选择器,如下所示:
// 创建一些初始颜色
Color pickerColor = Color(0xff443a49);
Color currentColor = Color(0xff443a49);
// 当颜色发生变化时调用此方法
void changeColor(Color color) {
setState(() => pickerColor = color);
}
// 显示颜色选择器对话框
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Pick a color!'),
content: SingleChildScrollView(
child: ColorPicker(
pickerColor: pickerColor,
onColorChanged: changeColor,
),
),
actions: <Widget>[
ElevatedButton(
child: const Text('Got it'),
onPressed: () {
setState(() => currentColor = pickerColor);
Navigator.of(context).pop();
},
),
],
);
},
);
更多关于Flutter颜色选择器插件flutter_color_picker_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter颜色选择器插件flutter_color_picker_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何使用 flutter_color_picker_plus
插件的简单示例代码。这个插件允许你在 Flutter 应用中选择颜色。首先,你需要确保在 pubspec.yaml
文件中添加该插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_color_picker_plus: ^3.0.0 # 请检查最新版本号
然后运行 flutter pub get
以获取依赖项。
接下来,在你的 Dart 文件中,你可以使用 flutter_color_picker_plus
插件来显示颜色选择器。以下是一个完整的示例,展示如何在点击按钮时显示颜色选择器,并将选择的颜色显示在屏幕上。
import 'package:flutter/material.dart';
import 'package:flutter_color_picker_plus/flutter_color_picker_plus.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Color Picker Plus 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;
void _pickColor(BuildContext context) async {
final Color pickedColor = await showColorPickerPlus(
context: context,
initialColor: selectedColor,
enableAlpha: true, // 是否启用透明度选择
pickerColor: Colors.white, // 选择器背景颜色
);
if (pickedColor != null) {
setState(() {
selectedColor = pickedColor;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Color Picker Plus Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
width: 100,
height: 100,
color: selectedColor,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () => _pickColor(context),
child: Text('Pick Color'),
),
],
),
),
);
}
}
在这个示例中:
- 依赖项:在
pubspec.yaml
中添加了flutter_color_picker_plus
依赖项。 - 主应用:
MyApp
类是应用的主入口,它包含了MaterialApp
和ColorPickerDemo
组件。 - 颜色选择器演示:
ColorPickerDemo
类是一个有状态的组件,它包含一个颜色变量selectedColor
和一个打开颜色选择器的函数_pickColor
。 - 颜色选择逻辑:
_pickColor
函数使用showColorPickerPlus
方法显示颜色选择器,并将选中的颜色存储在selectedColor
中。 - UI:在
build
方法中,我们创建了一个简单的 UI,包括一个显示选中颜色的容器和一个按钮,点击按钮时会调用_pickColor
函数。
运行这个示例,你将看到一个按钮和一个颜色块。点击按钮会打开颜色选择器,选择颜色后,颜色块会更新为你选择的颜色。