简体   繁体   English

Flutter:圆形拾色器(封装:flutter_colorpicker)

[英]Flutter: Circular Color Picker (Package: flutter_colorpicker)

I used this flutter package to implement a color picker in my app.我使用这个flutter package 在我的应用程序中实现颜色选择器。 My Widget looks something like this:我的Widget看起来像这样:

     ColorPicker(
              pickerColor: model.color,
              onColorChanged: (color) {
               ...
              },
              showLabel: false,
              pickerAreaHeightPercent: 0.4,
            )

This works fine and looks like this in the UI:这工作正常,在 UI 中看起来像这样:

选色器

Now I wondered how I could implement a classical circular color picker .现在我想知道如何实现一个经典的圆形颜色选择器 I did not find an example in the official documentation but there is a screenshot in the package description that shows just this:我在官方文档中没有找到示例,但 package 描述中的屏幕截图显示了这一点:

圆形颜色选择器

Does anyone know how to implement this using the same package or can hint me to an example.有谁知道如何使用相同的 package 来实现这一点,或者可以提示我一个例子。

please check out this and you need to palette type as paletteType: PaletteType.hueWheel, .请查看此内容,您需要将调色板类型设置为调色板类型paletteType: PaletteType.hueWheel, use the same package as used.使用与使用相同的 package。

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


void main() => runApp(const MaterialApp(home: MyApp()));

class MyApp extends StatefulWidget {
  const MyApp({Key key}) : super(key: key);

  @override
  State<StatefulWidget> 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 Scaffold(
          appBar: AppBar(
            title: const Text('Flutter Color Picker Example'),
            backgroundColor: currentColor,
            foregroundColor: foregroundColor,

          ),
          body: Container(
            child: InkWell(
              onTap: (){
                showColorPicker();
              },
              child: Center(child: Text("Color Picker")),
            ),
          ),
        );
      }),
    );
  }

  void showColorPicker() {
    showDialog(context: context, builder: (BuildContext context){
      return AlertDialog(
        title: Text("Pick a color"),
        content: SingleChildScrollView(
          child: ColorPicker(
            pickerColor: Color(0xff443a49),
            paletteType: PaletteType.hueWheel,
          ),
      ),
      );
    });
  }
}

output output

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM