Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.2.0

focusable_control_builder

Crie facilmente controles personalizados que respondam corretamente ao mouse e ao teclado.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
1,7 mil
Curtidas
52
Pontos Pub
140

Instalar pacote

flutter pub add focusable_control_builder

Visão geral do pacote

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

Um pacote Flutter que simplifica a criação de controles de interface personalizados com tratamento adequado de foco de teclado e mouse. Ele fornece um padrão de construtor para gerenciar estados de foco, acessibilidade e eventos de entrada de forma consistente entre plataformas. Os desenvolvedores podem facilmente implementar elementos interativos como botões, controles deslizantes ou campos de formulário que respondem corretamente à navegação por tabulação, atalhos de teclado e interações com ponteiro. O pacote garante uma experiência do usuário sem interrupções para tecnologias assistivas e usuários que dependem de métodos de entrada não táteis.

Casos de uso

  • Criando entradas de formulário acessíveis
  • Construindo widgets interativos personalizados
  • Habilitar navegação por teclado em interfaces complexas
  • Apoiar leitores de tela e tecnologias assistivas
  • Implementando navegação com guias em aplicativos
  • Designando controles responsivos para desktop e web

Principais recursos

  • Gerenciamento de estado de foco embutido
  • Manipulação de eventos do teclado
  • Integração do ponteiro do mouse
  • Consistência entre plataformas
  • Design pronto para acessibilidade
  • API de construtor simples

Indicado para

  • Desenvolvedores criando aplicativos acessíveis
  • Projetos do Flutter voltados para desktop e web
  • Equipes que priorizam UX para usuários do teclado
  • Criadores de widgets personalizados
  • Aplicativos que exigem navegação completa por teclado

Considerações

  • Requer compreensão da semântica de foco
  • Pode ser necessário estilização adicional para feedback visual
  • Melhor usado com padrões de UI semântica
  • Não necessário para interfaces simples baseadas apenas em toque
  • A integração com árvores de foco existentes pode exigir cuidado

README original

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

focusable_control_builder

Using FocusableControlBuilder you can quickly create a new control that will work properly on all platforms and input devices.

Working "properly" entails support for:

  • tab key traversal
  • focus / rollover states
  • modified mouse cursor
  • support for keyboard shortcuts (Enter/Space by default)

Under the hood, this builder wraps the built in FocusableActionDetector and you can read there for more details about how it all works.

For more information on why you'd use these widgets, see this blog post: https://blog.gskinner.com/archives/2021/06/flutter-building-custom-components-with-focusableactiondetector.html

🔨 Installation

$ flutter pub add focusable_control_builder
⚙ Import
import 'package:focusable_control_builder/focusable_control_builder.dart';

🕹️ Usage

To create a custom button just implement the FocusableControlBuilder.builder method and assign an onPressed handler:

class MyCustomButton extends StatelessWidget {
  const MyCustomButton(this.label, {Key? key, required this.onPressed}) : super(key: key);
  final String label;
  final VoidCallback onPressed;
  @override
  Widget build(BuildContext context) {
    return FocusableControlBuilder(
        onPressed: onPressed,
        builder: (_, FocusableControlState control) {
          // Decide which colors to use, based on .isFocused and .isHovered
          Color outlineColor = control.isFocused ? Colors.black : Colors.transparent;
          Color bgColor = control.isHovered ? Colors.blue.shade100 : Colors.grey.shade200;
          // Return custom button contents
          return Container(
            padding: const EdgeInsets.all(8),
            child: Text(label),
            decoration: BoxDecoration(
              color: bgColor,
              border: Border.all(color: outlineColor, width: 1),
            ),
          );
        });
  }
}
Custom Mouse Cursor

FocusableControlBuilder will assume you want a "hand" cursor for your control, which is typically the case. If you'd like a different cursor, just assign it:

return FocusableControlBuilder(
    cursor: SystemMouseCursors.resizeDown,
    ...
);
Request Focus On Press

FocusableControlBuilder will assume you want your control to request focus when it is pressed. To disable, just set this to false:

return FocusableControlBuilder(
    requestFocusOnPress: false,
    ...
);
Custom Shortcuts

FocusableControlBuilder will create a default activation action which handles [Submit] and [Enter] keys. To create custom keyboard shortcuts you can set the .shortcuts and .actions parameters. This is a bit beyond the scope of this doc, but if you'd like to learn how, checkout the FocusableActionDetector docs which contain an example.

🐞 Bugs/Requests

If you encounter any problems please open an issue. If you feel the library is missing a feature, please raise a ticket on Github and we'll look into it. Pull request are welcome.

📃 License

MIT License

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.