Buscar pacotes, repositórios e categorias de apps

Capa de flutter_tags
Detalhes do pacotev0.4.9+1

flutter_tags

Criar tags selecionáveis e de entrada (TextField) nunca foi tão fácil.

Downloads em 30 dias
789
Curtidas
297
Pontos Pub
40

Instalar pacote

flutter pub add flutter_tags

Visão geral do pacote

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

flutter_tags é um pacote Flutter que simplifica a criação de tags selecionáveis e baseadas em entrada, combinando funcionalidades para tags pré-definidas e tags inseridas pelo usuário. Ele oferece uma interface intuitiva com suporte integrado para adicionar, remover e selecionar tags, tornando-o ideal para formulários, filtros ou sistemas de etiquetagem. O pacote se integra perfeitamente ao TextField para entrada dinâmica e oferece personalização por meio de estilos e callbacks. É leve e projetado para facilitar o uso sem exigir configurações complexas.

Casos de uso

  • Entradas de formulário com seleção de tags
  • marcação de conteúdo gerado pelo usuário
  • Filtrando interfaces com tags dinâmicas
  • Funcionalidade de busca baseada em tags
  • Elementos de formulário interativos com feedback em tempo real

Principais recursos

  • Etiquetas selecionáveis e editáveis
  • Integração embutida do TextField
  • Aparência e comportamento personalizáveis
  • Operações fáceis de adicionar/remover tags
  • Suporta tags pré-definidas e dinâmicas

Indicado para

  • Desenvolvedores construindo formulários interativos
  • Aplicativos que exigem filtragem baseada em tags
  • Componentes de interface do usuário que precisam de gerenciamento dinâmico de tags
  • Projetos focados em interfaces de tags limpas e minimalistas
  • Prototipagem rápida de recursos com muitos rótulos

Considerações

  • Personalização limitada por plataforma
  • Nenhuma validação embutida para tags de entrada
  • Pode exigir estilos adicionais para layouts complexos
  • Não otimizado para listas de tags muito grandes
  • Depende de dependências externas para funcionalidades avançadas

README original

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

flutter_tags

pub package Awesome Flutter Donate

Create beautiful tags quickly and easily.

Installing

Add this to your package's pubspec.yaml file:

dependencies:
  flutter_tags: "^0.4.9+1"

DEMO

Simple usage


import 'package:flutter_tags/flutter_tags.dart';
.
.
.
List _items;
double _fontSize = 14;

@override
void initState(){
    super.initState();
    // if you store data on a local database (sqflite), then you could do something like this
    Model().getItems().then((items){
            _items = items;
        });
}

@override
Widget build(BuildContext context) {
    return Tags(
      key:_tagStateKey,
      textField: TagsTextField(
        textStyle: TextStyle(fontSize: _fontSize),
        constraintSuggestion: true, suggestions: [],
        //width: double.infinity, padding: EdgeInsets.symmetric(horizontal: 10),
        onSubmitted: (String str) {
          // Add item to the data source.
          setState(() {
              // required
            _items.add(str);
          });
        },
      ),
      itemCount: _items.length, // required
      itemBuilder: (int index){          
            final item = _items[index];
    
            return ItemTags(
                  // Each ItemTags must contain a Key. Keys allow Flutter to
                  // uniquely identify widgets.
                  key: Key(index.toString()),
                  index: index, // required
                  title: item.title,
                  active: item.active,
                  customData: item.customData,
                  textStyle: TextStyle( fontSize: _fontSize, ),
                  combine: ItemTagsCombine.withTextBefore,
                  image: ItemTagsImage(
                    image: AssetImage("img.jpg") // OR NetworkImage("https://...image.png")
                  ), // OR null,
                  icon: ItemTagsIcon(
                    icon: Icons.add,
                  ), // OR null,
                  removeButton: ItemTagsRemoveButton(
                    onRemoved: (){
                        // Remove the item from the data source.
                        setState(() {
                            // required
                            _items.removeAt(index);
                        });
                        //required
                        return true;
                    },
                  ), // OR null,
                  onPressed: (item) => print(item),
                  onLongPressed: (item) => print(item),
            );
    
      },
    );    
}

final GlobalKey<TagsState> _tagStateKey = GlobalKey<TagsState>();
// Allows you to get a list of all the ItemTags
_getAllItem(){
    List<Item> lst = _tagStateKey.currentState?.getAllItem;
    if(lst!=null)
        lst.where((a) => a.active==true).forEach( ( a) => print(a.title));        
}

Wrapped widget example

You are free to wrap ItemTags () inside another widget

Tags(  
      itemCount: items.length, 
      itemBuilder: (int index){ 
          return Tooltip(
          message: item.title,
          child:ItemTags(
            title:item.title,
          )
          );
      },
    );    
Tags() parameters
PropName Description default value
columns Possibility to set number of columns when necessary null
itemCount Tag number to display required
symmetry Ability to view and scroll tags horizontally false
horizontalScroll Offset drawer width 0.4
heightHorizontalScroll height for HorizontalScroll to set to display tags correctly 60
spacing Horizontal space between the tags 6
runSpacing Vertical space between the tags 14
alignment Horizontal WrapAlignment WrapAlignment.center
runAlignment Vertical WrapAlignment WrapAlignment.center
direction Direction of the ItemTags Axis.horizontal
verticalDirection Iterate Item from the lower to the upper direction or vice versa VerticalDirection.down
textDirection Text direction of the ItemTags TextDirection.ltr
itemBuilder tag generator
textField add textField TagsTextFiled()
ItemTags() parameters
  • index - required
  • title - required
  • textScaleFactor - custom textScaleFactor
  • active - bool value (default true)
  • pressEnabled - active onPress tag ( default true)
  • customData - Possibility to add any custom value in customData field, you can retrieve this later. A good example: store an id from Firestore document.
  • textStyle - textStyle()
  • alignment - MainAxisAlignment ( default MainAxisAlignment.center)
  • combine - * ability to combine text, icons, images in different ways ( default ItemTagsCombine.imageOrIconOrText)*
  • icon - ItemTagsIcon()
  • image - ItemTagsImage()
  • removeButton - ItemTagsRemoveButton()
  • borderRadius - BorderRadius
  • border - custom border-side
  • padding - default EdgeInsets.symmetric(horizontal: 7, vertical: 5)
  • elevation - default 5
  • singleItem - default false
  • textOverflow - default TextOverflow.fade
  • textColor - default Colors.black
  • textActiveColor - default Colors.white
  • color - default Colors.white
  • activeColor - default Colors.blueGrey
  • highlightColor -
  • splashColor -
  • colorShowDuplicate - default Colors.red
  • onPressed - callback
  • onLongPressed - callback
  • onRemoved - callback

Donate

It takes time to carry on this project. If you found it useful or learned something from the source code please consider the idea of donating 5, 20, 50 € or whatever you can to support the project.

  • Donate

Issues

If you encounter problems, open an issue. Pull request are also welcome.

Categorias

Repositório-fonte

Projetos que usam este pacote