Buscar pacotes, repositórios e categorias de apps

Capa de multiple_search_selection
Detalhes do pacotev3.0.0

multiple_search_selection

Um widget de seleção múltipla altamente personalizável com funcionalidade de pesquisa difusa.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
1,4 mil
Curtidas
73
Pontos Pub
150

Instalar pacote

flutter pub add multiple_search_selection

Visão geral do pacote

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

Um widget de seleção múltipla altamente personalizável que inclui funcionalidade de pesquisa difusa, permitindo que os usuários selecionem eficientemente vários itens de um grande conjunto de dados. Ele suporta filtragem em tempo real com correspondência inteligente, tornando-o ideal para formulários, tags ou filtros onde os usuários precisam escolher várias opções. O widget foi projetado para desempenho suave em diversas plataformas e oferece ampla personalização para estilo e comportamento. Construído com Flutter, integra-se perfeitamente em aplicativos voltados para Android, iOS, Web, macOS, Windows e Linux.

Casos de uso

  • Entradas de formulário com múltiplas opções
  • Interfaces de seleção de tags
  • Sistemas de filtragem com pesquisa dinâmica
  • Seleção de preferência do usuário
  • Menus suspenso com busca
  • Multi-seleção em painéis de administração

Principais recursos

  • Pesquisa difusa para correspondência flexível
  • Interface e estilização personalizáveis
  • Suporte para grandes conjuntos de dados
  • Compatibilidade multiplataforma
  • Filtragem de pesquisa em tempo real
  • Seleção múltipla com feedback claro

Indicado para

  • Desenvolvedores construindo componentes de formulário complexos
  • Aplicativos que exigem seleção eficiente de múltiplos itens
  • Projetos que precisam de busca inteligente em menus suspenso
  • Equipes priorizando consistência entre plataformas
  • Usuários que querem um widget de seleção leve, mas poderoso

Considerações

  • Pode exigir ajustes para conjuntos de dados muito grandes
  • As opções de personalização podem aumentar a complexidade da configuração inicial
  • O desempenho depende da otimização de renderização do item
  • Recursos limitados de validação embutida
  • Não adequado para casos de uso de seleção única

README original

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

Version Version

Show some love by dropping a ⭐ at GitHub
HTML tutorial

A highly customizable multiple selection widget with fuzzy search functionality
// Use this controller to adjust the behaviour of the widget
// 1. getAllItems
// 2. getPickedItems
// 3. searchItems
// 4. clearSearchField
// 5. clearAllPickedItems
// 6. selectAllItems
// 7. minCharsToShowItems
// 8. allowDuplicateSelection
// 9. isSelectable
MultipleSearchController controller = MultipleSearchController();
MultipleSearchSelection<Country>(
  // The TextField that is used to search items.
  //
  // You can use this to customize the search field.
  // The `onChanged` of the `searchField` is used internally to search items,
  // so you can use the `onSearchChanged` callback to get the search query.
  searchField: TextField(
    decoration: InputDecoration(
      hintText: 'Search countries',
      border: OutlineInputBorder(
        borderRadius: BorderRadius.circular(6),
        ),
      ),
    ),
  onSearchChanged: (text) {
    print('Text is $text');
  },
  items: countries, // List<Country>
  fieldToCheck: (c) {
    return c.name; // String
  },
  itemBuilder: (country,index,isPicked) {
    return Padding(
      padding: const EdgeInsets.all(6.0),
      child: Container(
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(6),
          color: Colors.white,
        ),
        child: Padding(
          padding: const EdgeInsets.symmetric(
            vertical: 20.0,
            horizontal: 12,
          ),
          child: Text(country.name),
        ),
      ),
    );
  },
  pickedItemBuilder: (country) {
    return Container(
      decoration: BoxDecoration(
        color: Colors.white,
        border: Border.all(color: Colors.grey[400]!),
      ),
      child: Padding(
        padding: const EdgeInsets.all(8),
        child: Text(country.name),
      ),
    );
  },
  onTapShowedItem: () {},
  onPickedChange: (items) {},
  onItemAdded: (item) {},
  onItemRemoved: (item) {},
  sortShowedItems: true,
  sortPickedItems: true,
  fuzzySearch: FuzzySearch.jaro,
  itemsVisibility: ShowedItemsVisibility.alwaysOn,
  title: Text(
    'Countries',
    style: kStyleDefault.copyWith(
      fontSize: 22,
      fontWeight: FontWeight.bold,
    ),
  ),
  showSelectAllButton: true,
  maximumShowItemsHeight: 200,
)
MultipleSearchSelection<T>.creatable

MultipleSearchSelection<T>.creatable constructor can now create new item when search result does not return any results. It takes a new required parameter, createOptions e.g :

// [T] here is [Country]
createOptions: CreateOptions<Country>(
    // You need to create and return the item you want to add since [T] is not always [String].
    create: (text) {
        return Country(name: text, iso: text);
    },
    // A callback when the item is succesfully created.
    onCreated: (c) => print('Country ${c.name} created'),
    // Create item Widget that appears instead of no results.
    createBuilder: (text) => Align(
        alignment: Alignment.centerLeft,
            child: Padding(
                padding: const EdgeInsets.all(8.0),
                child: Text('Create "$text"'),
            ),
        ),
    // Whether you want to pick the newly created item or just add it to your list. Defaults to false.
    pickCreated: true,
),
Creatable
Showed items visibility

itemsVisibility behaviour for the default & creatable constructors

ShowedItemsVisibility.alwaysOn ShowedItemsVisibility.onType ShowedItemsVisibility.toggle
Always On On type Toggle

Issues / Features

Found a bug or want a new feature? Open an issue in the Github repository of the project.

Categorias

Dependências

Lista de dependências 1 itens

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.