搜索插件、代码仓与 APP 分类

selector_wheel 封面
插件详情v1.1.2

selector_wheel

一个用于创建可自定义值选择轮的 Flutter 包。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
174
喜欢数
30
Pub 分数
130

安装插件

flutter pub add selector_wheel

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 包,可实现可自定义的交互式数值选择轮,用于用户输入。它提供了一种视觉上引人入胜的方式,通过旋转轮盘选择数值,非常适合设置、计时器或任何需要直观数字或分类选择的场景。该轮盘支持平滑动画、自定义样式以及跨平台的响应式行为。专为寻求替代传统文本字段或下拉框并提升用户体验的开发者设计。

适合场景

  • 带有视觉反馈的表单输入
  • 时间或数量选择器
  • 游戏化用户界面
  • 具有可调参数的设置
  • 互动式教育工具

主要特点

  • 可自定义的轮盘外观
  • 平滑旋转动画
  • 响应式触摸和拖拽支持
  • 对离散值和连续值的支持
  • 跨平台兼容性

适合对象

  • 开发交互式 UI 的开发者
  • 需要直观值选择的应用程序
  • 希望拥有独特表单元素的设计师
  • 面向多个平台的项目

使用建议

  • 在低端设备上可能需要性能调优
  • 有限的内置验证
  • 未针对非常大的值范围进行优化
  • 需要仔细设计以确保可访问性

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Selector Wheel

pub package codecov

A Flutter package for creating customizable selector wheel widgets.

Table of Contents

Features

  • Customizable selector wheel widget
  • Supports variable wheel size, item width, item height, and more
  • Built with Flutter's best practices for optimal performance
  • Supports haptic feedback, fade-out effect, and more
  • Can be used with any data type

Usage example regular Usage example with bottom sheet

Getting started

Add selector_wheel to your pubspec.yaml by running the following command:

flutter pub add selector_wheel

Usage

Import the package:

import 'package:selector_wheel/selector_wheel.dart';
Basic usage

Use the SelectorWheel widget in your app:

SizedBox(
  width: 200,
  height: 200,
  child: SelectorWheel(
    childCount: 10,
    // convertIndexToValue is a function that converts the index of the
    // child to a value that is displayed on the selector wheel. In this
    // case, we are converting the index to a string. I.e we'll have
    // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 on the selector wheel.
    convertIndexToValue: (int index) {
      return SelectorWheelValue(
        label: index.toString(),
        value: index,
        index: index,
      );
    },
    onValueChanged: (SelectorWheelValue<int> value) {
      // print the value that was selected
      print(value);
    },
  ),
)
Customizing the selector wheel

Keep in mind, that the convertIndexToValue function can be used to convert the index to any value. In the example below, we are converting the index to a double value to represent quarter lbs.

SizedBox(
  width: 200,
  height: 200,
  child: SelectorWheel(
    childCount: 10,
    convertIndexToValue: (int index) {
      // This is just to illustrate, that the index can be converted
      // to any value. In this case, we are converting the index to
      // a quarter of a pound.
      final quarter = index / 4;

      return SelectorWheelValue(
        // The label is what is displayed on the selector wheel
        label: '${quarter.toString()} lb',
        value: quarter,
        index: index,
      );
    },
    onValueChanged: (SelectorWheelValue<double> value) {
      // print the value that was selected
      print(value);
    },
  ),
)

The colors of the selector wheel can be customized by overriding the ThemeData in the following way:

// Overriding the colors of the selector wheel
Theme(
  data: ThemeData(
    textTheme: Theme.of(context).textTheme.copyWith(
      titleLarge: Theme.of(context).textTheme.titleLarge?.copyWith(
        fontSize: 24.0,
        fontWeight: FontWeight.w600,
      ),
    ),
    colorScheme: Theme.of(context).colorScheme.copyWith(
      surface: Colors.black,
      onSurface: Colors.white,
      secondaryContainer: Colors.amber,
    ),
  ),
  child: SizedBox(
    width: 200,
    height: 200,
    child: SelectorWheel(
      childCount: 10,
      highlightBorderRadius: 16.0,
      highlightHeight: 40.0,
      highlightWidth: 100.0,
      convertIndexToValue: (int index) {
        return SelectorWheelValue(
          label: index.toString(),
          value: index,
          index: index,
        );
      },
      onValueChanged: (value) {
        // print the value that was selected
        print(value);
      },
    ),
  ),
)

Notice, that we're also customizing the "highlighted" item's border radius, height, and width. To see all the customizable properties, check out the SelectorWheel class.

Contributing

Contributions are welcome! If you find a bug or have a feature request, please open an issue on the GitHub repository.

License

This package is licensed under the MIT License. For more details, please refer to the LICENSE file included in the repository.

所属分类

依赖

依赖清单 3 项

源码仓库

使用此插件的项目

暂无相关数据。