Widget: AbsorbPointer


Bloqueando uma árvore de widget

Muitos widgets oferecem a opção de desabilitar a entrada. Se você definir a revogação onPressed de um RaisedButton para null, por exemplo, ele será desabilitado.

RaisedButton(
color: Colors.blue,
child: Text('Clique aqui'),
onPressed: null,
)

Você pode usar NeverScrollableScrollPhysics para que uma ListView não role quando o usuário arrastá-la. Mas, se você tiver uma árvore complicada de widget e precisar de uma forma simples de isolar eventos de cliques, tente usar AbsorbPointer.

Coloque-o no ponto mais alto da subárvore de widget que quiser bloquear e, embora não poassa vê-lo, ele impedirá que eventos de clique cheguem aos widget abaixo:

class MyHomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return AbsorbPointer(
      child: ABunchOfWidgets(),
    );
  }
}

Você pode usar a propriedade de absorção para rapidamente ligar e deligar o AbsorbPointer:

class MyHomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return AbsorbPointer(
absorbing: false,
      child: ABunchOfWidgets(),
    );
  }
}

ignoringSemantics

A propriedade ignoringSemantics permite controlar se leitores de tela e outras funções vão ignorar os widget bloqueados.

class MyHomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return AbsorbPointer(
ignoringSemantics: false,
      child: ABunchOfWidgets(),
    );
  }
}

 

227 Visualizações
Awesome Flutter