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

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

简介

OColorPicker 是一个简单且快速的两步颜色选择器插件,支持色调和颜色自定义。

实现

访问 pub.dev -> 安装pub.dev -> 示例

如果你不确定如何显示颜色选择器,可以使用 o_popup。两个包的组合示例可以在 example/demo.dart 中找到。

商业使用

如果你在商业项目中使用了此代码,请通过 GitHub Sponsors 捐赠给我。我也对使用的所有包做同样的事情,因为这确保了所有人的稳定开发!


完整示例

以下是一个完整的示例代码,展示了如何在Flutter应用中使用 o_color_picker 插件。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'o_color_picker demo app',
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  // 初始选中的颜色
  Color? selectedColor = Colors.lightGreen[300];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 创建一个按钮,点击后会弹出颜色选择器
            TextButton(
              style: ButtonStyle(
                  backgroundColor: MaterialStateProperty.resolveWith<Color>(
                (var states) => selectedColor!,
              )),
              child: Text(
                'Change the color of the button',
                style: TextStyle(
                  color: Colors.black,
                ),
              ),
              onPressed: () => showDialog<void>(
                context: context,
                builder: (_) => Material(
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      // 使用 OColorPicker 组件来选择颜色
                      OColorPicker(
                        selectedColor: selectedColor,
                        colors: primaryColorsPalette,
                        onColorChange: (color) {
                          setState(() {
                            selectedColor = color;
                          });
                          Navigator.of(context).pop();
                        },
                      ),
                    ],
                  ),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 导入库

    import 'package:flutter/material.dart';
    import 'package:o_color_picker/o_color_picker.dart';
    
  2. 创建主应用

    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      [@override](/user/override)
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'o_color_picker demo app',
          home: MyHomePage(),
        );
      }
    }
    
  3. 创建主页

    class MyHomePage extends StatefulWidget {
      [@override](/user/override)
      _MyHomePageState createState() => _MyHomePageState();
    }
    
  4. 设置状态管理

    class _MyHomePageState extends State<MyHomePage> {
      Color? selectedColor = Colors.lightGreen[300];
    
  5. 构建UI

    [@override](/user/override)
    Widget build(BuildContext context) {
      return Scaffold(
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              TextButton(
                style: ButtonStyle(
                    backgroundColor: MaterialStateProperty.resolveWith<Color>(
                  (var states) => selectedColor!,
                )),
                child: Text(
                  'Change the color of the button',
                  style: TextStyle(
                    color: Colors.black,
                  ),
                ),
                onPressed: () => showDialog<void>(
                  context: context,
                  builder: (_) => Material(
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        OColorPicker(
                          selectedColor: selectedColor,
                          colors: primaryColorsPalette,
                          onColorChange: (color) {
                            setState(() {
                              selectedColor = color;
                            });
                            Navigator.of(context).pop();
                          },
                        ),
                      ],
                    ),
                  ),
                ),
              ),
            ],
          ),
        ),
      );
    }
    

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

1 回复

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


o_color_picker 是一个用于 Flutter 的简单且易于使用的颜色选择器插件。它允许用户从预定义的颜色列表中选择颜色,或者通过自定义颜色选择器选择颜色。以下是如何在 Flutter 项目中使用 o_color_picker 插件的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 o_color_picker 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  o_color_picker: ^1.0.0  # 请检查最新版本

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

2. 导入插件

在需要使用颜色选择器的 Dart 文件中导入 o_color_picker 插件:

import 'package:o_color_picker/o_color_picker.dart';

3. 使用颜色选择器

o_color_picker 提供了一个简单的 OColorPicker 小部件,你可以将其嵌入到你的 UI 中。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:o_color_picker/o_color_picker.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;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Color Picker Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Container(
              width: 100,
              height: 100,
              color: _selectedColor,
            ),
            SizedBox(height: 20),
            OColorPicker(
              onColorChanged: (Color color) {
                setState(() {
                  _selectedColor = color;
                });
              },
              pickerColor: _selectedColor,
              showLabel: true,
              paletteType: PaletteType.hsl,
              enableCustomColor: true,
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部