Buscar pacotes, repositórios e categorias de apps

Capa de wheel_picker
Detalhes do pacotev0.4.0

wheel_picker

Um widget de seleção de valor/tempo usando rodas de entrada. Personalizável e leve.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
12,3 mil
Curtidas
83
Pontos Pub
160

Instalar pacote

flutter pub add wheel_picker

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Um widget leve e personalizável do Flutter que implementa um seletor baseado em roda para escolha de valores ou horários. Inspirado em spinners nativos, oferece rolagem suave e interação intuitiva em todas as plataformas. Ideal para formulários que exigem seleção de data, hora ou valores discretos. O pacote foi projetado para ser eficiente e fácil de integrar, com suporte a Android, iOS, Web, macOS, Windows e Linux. Oferece uma API limpa para personalizar aparência e comportamento sem adicionar sobrecarga significativa.

Casos de uso

  • Entradas de formulário com opções discretas
  • Interfaces de seleção de tempo
  • Seletores personalizados numéricos ou suspensos
  • Entrada de dados com feedback visual
  • Seleção de valor de múltiplas rodas

Principais recursos

  • animação de rolagem suave
  • Compatibilidade multiplataforma
  • Aparência personalizável
  • Desempenho leve
  • Integração fácil com campos de formulário
  • Espaçamento e tamanho configuráveis do item

Indicado para

  • Desenvolvedores de aplicativos com formulários intensos
  • Designers de UI que precisam de seletores semelhantes aos nativos
  • Aplicativos que exigem seleção de tempo ou valor
  • Projetos que priorizam o tamanho mínimo do pacote
  • Equipes direcionadas para múltiplas plataformas

Considerações

  • Validação interna limitada
  • Sem integração automática do teclado
  • Requer manipulação manual de eventos de seleção
  • Não otimizado para conjuntos de dados muito grandes
  • Pode ser necessário estilização adicional para o modo escuro

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

Wheel Picker

A superset version of original ListWheelScrollView for easily creating wheel scroll input.

Flutter Pub

Left Gif Right Gif

Key Features

  • Item Selection: Retrieve the selected item index effortlessly.
  • Highlight Selection: Highlight selected items with a color shader.
  • Tap Navigation: Enable tap scrolls.
  • Horizontal Scroll Direction: Horizontal wheel scroll view.
  • Styling Flexibility: Customize wheel appearance with WheelPickerStyle.
  • Precise Control: Manage and synchronize WheelPicker widgets with a WheelPickerController.
  • Mounting Controllers: Easily integrate and shift multiple controllers.

Installing

Add it to your pubspec.yaml file:

dependencies:
  wheel_picker: ^0.3.0

Install packages from the command line:

flutter packages get

Usage

To use package, just import package import 'package:wheel_picker/wheel_picker.dart';

Example

Here's a quick example to get you started:

const daysOfWeek = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
return WheelPicker(
  itemCount: 7,
  builder: (context, index) => Text(daysOfWeek[index]),
  selectedIndexColor: Colors.orange,
  looping: false,
);
Basic (Left Gif)

For more control, you can attach a controller and adjust it to your liking:

import 'dart:async';

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

class WheelPickerExample extends StatelessWidget {
  const WheelPickerExample({super.key});

  @override
  Widget build(BuildContext context) {
    final secondsWheel = WheelPickerController(itemCount: 10);
    const textStyle = TextStyle(fontSize: 32.0, height: 1.5);

    Timer.periodic(const Duration(seconds: 1), (_) => secondsWheel.shiftDown());

    return WheelPicker(
      builder: (context, index) => Text("$index", style: textStyle),
      controller: secondsWheel,
      selectedIndexColor: Colors.blue,
      onIndexChanged: (index, interactionType) => print("On index $index"),
      style: WheelPickerStyle(
        itemExtent: textStyle.fontSize! * textStyle.height!, // Text height
        squeeze: 1.25,
        diameterRatio: .8,
        surroundingOpacity: .25,
        magnification: 1.2,
      ),
    );
  }
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Flutter Example',
      home: Scaffold(
        body: Center(
          child: WheelPickerExample(),
        ),
      ),
    );
  }
}

void main() => runApp(const MyApp());

Note: This works for this short example but don't forget to manually dispose controllers you initialize youself.

Advanced (Right Gif)

For more advanced usage, you can also mount controllers, making them shift each other. See example.

Example: Listening for the scroll end event
const daysOfWeek = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];

return NotificationListener(
  onNotification: (notification) {
    if (notification is ScrollEndNotification) {
      print('User has ended scrolling');
    }
    return false;
  },
  child: WheelPicker(
    itemCount: 7,
    builder: (context, index) => Text(daysOfWeek[index]),
    selectedIndexColor: Colors.orange,
    looping: false,
  ),
);


Feel free to share your feedback, suggestions, or contribute to this package :handshake:.

If you like this package, consider supporting it by giving it a star on GitHub and a like on pub.dev :heart:.

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.