Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev2.0.0

flutter_focus_watcher

Um novo pacote Flutter.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
290
Curtidas
23
Pontos Pub
140

Instalar pacote

flutter pub add flutter_focus_watcher

Visão geral do pacote

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

O Flutter Focus Watcher é um pacote do Flutter projetado para monitorar mudanças de foco em widgets, especialmente útil para o tratamento de formulários. Permite que desenvolvedores detectem quando um widget ganha ou perde foco, possibilitando comportamentos de interface responsiva, como destacar campos focados ou acionar validação. O pacote suporta todas as principais plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux, tornando-se ideal para aplicações multiplataforma. Com configuração mínima via pub add, integra-se perfeitamente em formulários e fluxos de entrada existentes.

Casos de uso

  • Monitorar o estado de foco em formulários
  • Disparando validação na mudança de foco
  • Melhorando a acessibilidade com feedback de foco
  • Implementando atualizações dinâmicas da interface com base no foco
  • Rastreamento de padrões de interação do usuário
  • Melhorando a usabilidade do formulário em entradas complexas

Principais recursos

  • Detecção em tempo real de alteração de foco
  • Compatibilidade multiplataforma
  • Integração simples com widgets existentes
  • Suporta eventos de ganho e perda de foco
  • Leve e eficiente
  • Funciona com campos de texto e widgets personalizados focáveis

Indicado para

  • aplicações com muitos formulários
  • Desenvolvimento focado em acessibilidade
  • Componentes de interface interativa
  • Aplicativos móveis e web multiplataforma
  • Desenvolvedores que buscam feedback em tempo real de entrada
  • Aplicativos que exigem gerenciamento avançado de estado de formulário

Considerações

  • Requer manipulação manual dos estados de foco em cenários complexos
  • Pode ser necessário lógica adicional para formulários aninhados ou dinâmicos
  • Não destinado a casos de uso não formais
  • Limitado a eventos relacionados ao foco apenas
  • Melhor usado em conjunto com outros pacotes de validação de formulário
  • Impacto no desempenho desprezível, mas deve ser testado em formulários grandes

README original

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

Flutter Focus Watcher

This widget is used to remove TextField focus if a tap occured somewhere else In order for this to work properly, it must be placed inside MaterialApp or WidgetsApp. This is necessary because this widget requires MediaQuery, which is supplied by those two.

The widget also keeps track of a keyboard space and moves the whole application up if a focused TextField gets obscured by the keyboard The only additional thing you need to do for it is to set your Scaffold's resizeToAvoidBottomInset to false (in case you use scaffold) and that's it. If you want to change the height of application lift, simply set your preferred value to the FocusWatcher's liftOffset variable. The default value is 15.0. This means the number of points above the keyboard's upper bound

Example

It's very easy to use. You may add it as a library or simply copy flutter_focus_watcher.dart into your project. It doesn't have any external dependencies

Then simply do this. Notice that FocusWatcher is inside MaterialApp. That's because it inherits MediaQuery from that

IMPORTANT! You must wrap with the FocusWatcher every scaffold where you want this functionality

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

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
   Widget build(BuildContext context) {
      return MaterialApp(
        title: 'Demo app',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: MyHomePage(title: 'Flutter Demo Home Page')
      );
    }
}

 @override
  Widget build(BuildContext context) {
    return FocusWatcher(
        child: Scaffold(
         // don't forget about this
         resizeToAvoidBottomInset: false,
         ...
       )
    );
     
  }

And it will do the rest.

alt watcher

And here is how it handles the keyboard

alt keyboard

In case you want to exclude some widget from this workflow, simply wrap that widget with

@override
Widget build(BuildContext context) {
    return IgnoreFocusWatcher(
      child: TextField("I will be ignored by FocusWatcher")
    );
}

And this widget will be ignored by FocusWatcher

There may also be some cases when a TextField (like material text field) does not apply a RenderEditable or RenderParagraph thus making this plugin useless. You can simply fix it by wrapping the TextField in a ForceFocusWatcher() widget. That's it

@override
Widget build(BuildContext context) {
    return ForceFocusWatcher(
      child: TextField("I'm forced to activate focus watcher")
    );
}

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.