Hice un GridView con niños que cada uno tiene un GestureDetector y un conjunto de métodos onTap . Pero el evento onTap solo se llama cuando se crea la vista y no cuando se toca el elemento. ¿Qué estoy haciendo mal aquí?
class MyGridView extends StatelessWidget { @override Widget build(BuildContext context) { return new Column( children: <Widget>[ new Expanded( child: new GridView.count( crossAxisCount: 2, children: [ new GridItem(0), new GridItem(1) ] ) ) ] ); } } class GridItem extends StatelessWidget { final int code; GridItem(this.code); @override Widget build(BuildContext context) { return new GestureDetector( onTap: print(code), child: new Container( height: 48.0, child: new Text('$code') ) ); } }Usted quiere:
onTap: () { print(code); },
Lo que está haciendo es llamar a imprimir, luego guardar el valor de retorno de la impresión (que será un valor nulo) como el controlador onTap, que en realidad deshabilita el controlador onTap. Si ve algo en los registros, será desde el momento en que realmente hizo la compilación, no cuando tocó.