Flutter颜色选择器插件color_pickr的使用
Flutter颜色选择器插件color_pickr的使用
color_pickr
基于所有优秀的设计灵感,HSV(HSB)/HSL/RGB/Material 颜色选择器为您的精美 Flutter 应用而设计。提供可爱的颜色选择器,满足所有开发者的定制需求。
示例
您可以从以下链接查看 Web 示例:
开始使用
在 [showDialog]
小部件中使用它:
// 创建一些值
Color pickerColor = Color(0xff443a49);
Color currentColor = Color(0xff443a49);
// ValueChanged<Color> 回调
void changeColor(Color color) {
setState(() => pickerColor = color);
}
// 弹出 [showDialog] 小部件
showDialog(
context: context,
child: AlertDialog(
title: const Text('Pick a color!'),
content: SingleChildScrollView(
child: ColorPicker(
pickerColor: pickerColor,
onColorChanged: changeColor,
),
// 使用 Material 颜色选择器:
//
// child: MaterialPicker(
// pickerColor: pickerColor,
// onColorChanged: changeColor,
// showLabel: true, // 仅在竖屏模式下显示
// ),
//
// 使用 Block 颜色选择器:
//
// child: BlockPicker(
// pickerColor: currentColor,
// onColorChanged: changeColor,
// ),
//
// child: MultipleChoiceBlockPicker(
// pickerColors: currentColors,
// onColorsChanged: changeColors,
// ),
),
actions: <Widget>[
ElevatedButton(
child: const Text('Got it'),
onPressed: () {
setState(() => currentColor = pickerColor);
Navigator.of(context).pop();
},
),
],
),
)
完整示例代码
以下是完整的示例代码,展示了如何在 Flutter 中使用 color_pickr
插件:
import 'package:flutter/material.dart';
import 'package:color_pickr/color_pickr.dart';
import './pickers/hsv_picker.dart';
import './pickers/material_picker.dart';
import './pickers/block_picker.dart';
void main() => runApp(const MaterialApp(home: MyApp()));
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/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](/user/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 [
Tab(text: 'HSV/HSL/RGB'),
Tab(text: 'Material'),
Tab(text: 'Blocky'),
],
),
),
body: TabBarView(
children: [
HSVColorPickerExample(
pickerColor: currentColor,
onColorChanged: changeColor,
colorHistory: colorHistory,
onHistoryChanged: (List<Color> colors) => colorHistory = colors,
),
MaterialColorPickerExample(
pickerColor: currentColor, onColorChanged: changeColor),
BlockColorPickerExample(
pickerColor: currentColor,
onColorChanged: changeColor,
pickerColors: currentColors,
onColorsChanged: changeColors,
colorHistory: colorHistory,
),
],
),
),
);
}),
);
}
}
更多关于Flutter颜色选择器插件color_pickr的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter颜色选择器插件color_pickr的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
color_pickr
是一个用于 Flutter 的颜色选择器插件,它允许用户从调色板中选择颜色。以下是如何在 Flutter 项目中使用 color_pickr
插件的步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 color_pickr
插件的依赖:
dependencies:
flutter:
sdk: flutter
color_pickr: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入包
在需要使用颜色选择器的 Dart 文件中导入 color_pickr
包:
import 'package:color_pickr/color_pickr.dart';
3. 使用颜色选择器
你可以通过调用 ColorPickr
组件来显示颜色选择器。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:color_pickr/color_pickr.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: ColorPickerExample(),
);
}
}
class ColorPickerExample extends StatefulWidget {
[@override](/user/override)
_ColorPickerExampleState createState() => _ColorPickerExampleState();
}
class _ColorPickerExampleState extends State<ColorPickerExample> {
Color _selectedColor = Colors.blue;
void _showColorPicker() async {
final Color? pickedColor = await showDialog<Color>(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('Pick a color'),
content: SingleChildScrollView(
child: ColorPickr(
onColorChanged: (Color color) {
_selectedColor = color;
},
selectedColor: _selectedColor,
),
),
actions: <Widget>[
TextButton(
child: Text('OK'),
onPressed: () {
Navigator.of(context).pop(_selectedColor);
},
),
],
);
},
);
if (pickedColor != null) {
setState(() {
_selectedColor = pickedColor;
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Color Picker Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
width: 100,
height: 100,
color: _selectedColor,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _showColorPicker,
child: Text('Pick a color'),
),
],
),
),
);
}
}