Я новичок в флаттере. В моем приложении я извлекаю данные из URL-адреса и просматриваю их. Теперь я хочу добавить прослушиватель onTap, который будет передавать идентификатор функции. Любая идея, как я могу это сделать.
return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
itemCount:snapshot.data.length,
itemBuilder:(BuildContext context, int index) {
final x = snapshot.data[index];
return Card(
child: Column(
children: <Widget>[
Image.network(
'https://thegreen.studio/ecommerce/default/upload/' +x.Image,
width: 200.0,
height: 150.0,
fit: BoxFit.cover,
),
Text(x.Description),
Text("Price: RM:134"),
],
),
);
},
);
Вы можете обернуть виджет Card
с помощью GestureDetector
:
GestureDetector(
onTap: () {
// Code
},
child: Card(
...
),
)
@BeHappy прав. Вы можете использовать GestureDetector
для прослушивания функции onTap. Вы можете передать идентификатор проиндексированного элемента в свой метод. Это будет выглядеть так:
return GridView.builder(
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
final x = snapshot.data[index];
return GestureDetector(
onTap: () {
// You can pass the id of indexed item.
yourMethod(x.id);
},
child: Card(
child: Column(
children: <Widget>[
Image.network(
'https://thegreen.studio/ecommerce/default/upload/' + x.Image,
width: 200.0,
height: 150.0,
fit: BoxFit.cover,
),
Text(x.Description),
Text("Price: RM:134"),
],
),
),
);
},
);