Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.2.0

combos

Widgets de combinação para Flutter. Inclui Combo, AwaitCombo, ListCombo, SelectorCombo, TypeaheadCombo, MenuItemCombo

Downloads em 30 dias
58
Curtidas
21
Pontos Pub
40

Instalar pacote

flutter pub add combos

Visão geral do pacote

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

Combos é um pacote Flutter que oferece uma coleção de widgets especializados para combinações, projetados para simplificar padrões de interface comum, especialmente interações baseadas em menus suspenso e seleção. Inclui widgets como Combo, AwaitCombo, ListCombo, SelectorCombo, TypeaheadCombo e MenuItemCombo, cada um adaptado para casos de uso específicos, como carregamento assíncrono de dados, renderização de listas e funcionalidade de busca com preenchimento automático. Esses componentes aumentam a produtividade do desenvolvedor ao fornecer soluções reutilizáveis, consistentes e personalizáveis para entradas de formulários e menus de navegação em aplicativos Flutter.

Casos de uso

  • Entradas de formulário com opções dinâmicas
  • Campos de pesquisa com preenchimento automático
  • Carregamento assíncrono de dados em menus suspenso
  • Renderização de item de menu personalizável
  • Interfaces de seleção baseadas em lista
  • Dependências de campo de formulário dinâmico

Principais recursos

  • Widgets combinados pré-construídos para padrões comuns
  • Suporte a dados assíncronos por meio do AwaitCombo
  • Entrada com autocompletar e filtragem
  • Integração flexível de lista e seletor
  • design reutilizável e composável
  • API limpa e consistente em todos os widgets

Indicado para

  • Desenvolvedores criando formulários com menus suspenso complexos
  • Equipes que precisam de componentes de seleção reutilizáveis
  • Aplicativos que exigem listas pesquisáveis ou dinâmicas
  • Projetos Flutter focados na consistência da experiência do usuário
  • Desenvolvedores que querem reduzir o código repetitivo para combinações

Considerações

  • Personalização limitada por plataforma
  • Sem suporte embutido para temas
  • Requer conhecimento sobre composição de widgets do Flutter
  • Pode aumentar ligeiramente o tamanho do pacote
  • Não otimizado para conjuntos de dados muito grandes sem paginação

README original

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

Combos

About

Combo widgets for Flutter.

Install instructions

Docs

Online Samples

alt text

Includes:

  • Combo - Simple combo widget for custom child and popup content.
  • AwaitCombo - Combo widget with delayed popup content builder for loading data with the progress indication
  • ListCombo - Combo widget for displaying items list
  • SelectorCombo - Combo widget for displaying items list with selected value
  • TypeaheadCombo - Typeahead widget with the text input and custom 'search' method
  • MenuItemCombo - Menu item widget for displaying popup menus
Examples
  • Combo
Combo(
  child: const Padding(
    padding: EdgeInsets.all(16),
    child: Text('Combo child'),
  ),
  popupBuilder: (context, mirrored) => const Material(
    elevation: 4,
    child: Padding(
      padding:
          EdgeInsets.symmetric(vertical: 48, horizontal: 16),
      child: Center(child: Text('Combo popup')),
    ),
  ),
)
  • AwaitCombo
AwaitCombo(
  child: const Padding(
    padding: EdgeInsets.all(16),
    child: Text('Combo child'),
  ),
  popupBuilder: (context) async {
    await Future.delayed(const Duration(milliseconds: 500));
    return const Material(
      elevation: 4,
      child: Padding(
        padding:
            EdgeInsets.symmetric(vertical: 48, horizontal: 16),
        child: Center(child: Text('Combo popup')),
      ),
    );
  },
)
  • ListCombo
ListCombo<String>(
  child: const Padding(
    padding: EdgeInsets.all(16),
    child: Text('Combo child'),
  ),
  getList: () async {
    await Future.delayed(const Duration(milliseconds: 500));
    return ['Item1', 'Item2', 'Item3'];
  },
  itemBuilder: (context, parameters, item) => ListTile(title: Text(item)),
  onItemTapped: (item) {},
)
  • SelectorCombo
String _item;

...

SizedBox(
  width: 200,
  child: SelectorCombo<String>(
    selected: _item,
    getList: () async {
      await Future.delayed(const Duration(milliseconds: 500));
      return ['Item1', 'Item2', 'Item3'];
    },
    itemBuilder: (context, parameters, item) =>
        ListTile(title: Text(item ?? '<Empty>')),
    onItemTapped: (item) => setState(() => _item = item),
  ),
)
  • TypeaheadCombo
String _item;

...

SizedBox(
  width: 200,
  child: TypeaheadCombo<String>(
    selected: _item,
    getList: (text) async {
      await Future.delayed(const Duration(milliseconds: 500));
      return ['Item1', 'Item2', 'Item3'];
    },
    itemBuilder: (context, parameters, item) =>
        ListTile(title: Text(item ?? '<Empty>')),
    onItemTapped: (item) => setState(() => _item = item),
    getItemText: (item) => item,
    decoration: const InputDecoration(labelText: 'Typeahead'),
  ),
)
  • MenuItemCombo
MenuItemCombo<String>(
  item: MenuItem(
      'File',
      () => [
            MenuItem('New'),
            MenuItem.separator,
            MenuItem('Open'),
            MenuItem('Save'),
            MenuItem('Save As...'),
            MenuItem.separator,
            MenuItem(
                'Recent',
                () => [
                      MenuItem('Folders', () async {
                        await Future.delayed(
                            Duration(milliseconds: 500));
                        return [
                          MenuItem('Folder 1'),
                          MenuItem('Folder 2'),
                          MenuItem('Folder 3'),
                        ];
                      }),
                      MenuItem('Files', () async {
                        await Future.delayed(
                            Duration(milliseconds: 500));
                        return [
                          MenuItem('File 1'),
                          MenuItem('File 2'),
                          MenuItem('File 3'),
                        ];
                      }),
                    ]),
            MenuItem.separator,
            MenuItem('Exit'),
          ]),
  itemBuilder: (context, parameters, item) => Padding(
    padding: const EdgeInsets.all(16),
    child: Text(item.item),
  ),
  onItemTapped: (value) {
    final dialog =
        AlertDialog(content: Text('${value.item} tapped!'));
    showDialog(context: context, builder: (_) => dialog);
  },
)

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.