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],
),
),
]
)
],
),
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.
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(...),
)