web-dev-qa-db-fra.com

Méthode Flutter onTap pour les conteneurs

Développé une application flottante et construit de manière dynamique des conteneurs à partir de données Firebase. Je voulais savoir s'il existe un moyen d'obtenir une méthode onTap pour les conteneurs (ou tout widget qui n'est pas un bouton?

Voici un exemple de code:

  child: new Container(

    //INSERT ONTAP OR ONPRESSED METHOD HERE

    margin: const EdgeInsets.symmetric(vertical: 10.0),
    child: new Row(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        new Container(
          margin: const EdgeInsets.only(right: 16.0),
          child: new GoogleUserCircleAvatar(snapshot.value['images'][0]),
        ),
        new Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children : [
            new Container(
              padding: const EdgeInsets.only(bottom: 8.0),
              child: new Text("${snapshot.value['name']}",
                style: new TextStyle(
                  fontWeight: FontWeight.bold,
                ),
              ),
             ),
            new Text("${snapshot.value['description']}",
              style: new TextStyle(
                color: Colors.grey[500],
              ),
            ),
          ]
        )
      ],
    ),
7
Alexi Coard

Vous pouvez envelopper votre Container dans un InkWell ou GestureDetector . La différence est que InkWell est un widget matériel qui indique visuellement que le toucher a été reçu, alors que GestureDetector est un widget à usage plus général qui ne présente aucun indicateur visuel.

20
Collin Jackson

envelopper le conteneur dans un Inkwell () Widget pourrait résoudre le problème ou même GestureDetector () as

  InkWell(                        
        child: Container(...),                        
        onTap: () {                          
        print("tapped on container");
        },                      
     );

Utilisation du Détecteur de gestes

GestureDetector(
  onTap: () { print("Container was tapped"); },
  child: Container(...),
)
2
maheshmnj