AnswerBun.com

Aumentar tamanho do GestureDetector Flutter

Stack Overflow em Português Asked by Jeff Henrique on January 6, 2022

Olá, tenho um GestureDetectorque recebe como filho um container com width: 20 e heigth: 20 e com isso meu GestureDetector fica apenas 20×20, como mostra a imagem (o tamanho é só a bolinha cinza)

inserir a descrição da imagem aqui

Ok, preciso aumentar a area do GestureDetector pensei em passar um Container como filho e deixar cor transparente, e como filho do container a minha "bolinha cinza (que é um container também)", mas não deu certo, ficou assim:

inserir a descrição da imagem aqui

Enfim, preciso de uma maneira pra aumentar apenas o local clicavel e não o container da bolinha cinza, como posso fazer? meu código está abaixo

GestureDetector(
                  child: Online(
                      online: lista[index].online, width: 20, heigth: 20),
                  onTap: () {
                    _alterarStatusFun(lista[index]);
                  }),

O online eu criei como classe pois uso em outros lugares :

class Online extends StatelessWidget {
  final bool online;
  final double width;
  final double heigth;
  const Online({Key key, this.online, this.width, this.heigth})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return online
        ? Container(
            width: width,
            height: heigth,
            decoration: BoxDecoration(
              color: Color.fromRGBO(0, 255, 0, 1),
              shape: BoxShape.circle,
            ),
          )
        : Container(
            width: width,
            height: heigth,
            decoration: BoxDecoration(
              color: Colors.grey,
              shape: BoxShape.circle,
            ),
          );
  }
}

One Answer

Englobe o widget Online em um padding com o valor da "margem clicável" que você deseja:

double margemClicavel = 50.0;
GestureDetector(
                  child: Padding(
                    padding: EdgeInsets.all(margemClicavel),
                    child: Online(
                      online: lista[index].online, width: 20, heigth: 20),
                      onTap: () {
                        _alterarStatusFun(lista[index]);
                  })),

Isso irá fazer o GestureDetector envolver não apenas o container, como todo o padding em torno dele. Porém, como o Padding não desenha nada na tela, o seguinte comportamento, que é descrito na documentação, irá ocorrer:

By default a GestureDetector with an invisible child ignores touches; this behavior can be controlled with behavior.

Tradução livre: Caso o child seja invisível ele terá os cliques ignorados. Esse comportamento pode ser modificado pela property behavior.

Portanto, para corrigir isso, use nesta property o valor HitTestBehavior.opaque:

double margemClicavel = 50.0;
GestureDetector(
                  behavior: HitTestBehavior.opaque,
                  child: Padding(
                    padding: EdgeInsets.all(margemClicavel),
                    child: Online(
                      online: lista[index].online, width: 20, heigth: 20),
                      onTap: () {
                        _alterarStatusFun(lista[index]);
                  })),

O valor dos valores do enum HitTestBehavior podem ser conferidos na documentação.

Answered by Naslausky on January 6, 2022

Add your own answers!

Related Questions

Criptografar senha em groovy

1  Asked on January 6, 2022 by r-santos

       

Excel VBA altera o formato da data para mm/dd/yyyy

1  Asked on January 6, 2022 by vanessa-cotarelli

   

Erro ao importar pygame no Pycharm

5  Asked on January 6, 2022 by simionato

       

Encadeamento de pipelines

1  Asked on January 6, 2022 by gabriel-hardoim

       

Conflito na instalação da ultima versão do hive

2  Asked on January 6, 2022 by rubstackoverflow

   

Aumentar tamanho do GestureDetector Flutter

1  Asked on January 6, 2022 by jeff-henrique

   

Seletor de sexo em condicional if

3  Asked on January 4, 2022 by diego-roney

   

Obter nomes de uma lista que possuem tamanho igual a 4

2  Asked on January 4, 2022 by p-sampaio

   

Decremento, incremento e soma de ponteiros em C

1  Asked on January 4, 2022 by thiago-cerqueira

   

Plotar na horizontal (coluna a coluna) – Python

1  Asked on January 4, 2022 by diego-provesi

     

Problema com PHPMailer no envio de e-mails

1  Asked on January 4, 2022 by victor-wurthmann

         

Pegar mais de um elemento de um Array

1  Asked on January 2, 2022

 

receber json para tornar o meu Echart dinamico

2  Asked on January 2, 2022 by jooes

       

Qual é a diferença entre Promises e Observables?

4  Asked on January 2, 2022 by matheus-bessa

 

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP