Flutter-контейнер onPressed?
У меня есть этот контейнер:
new Container(
width: 500.0,
padding: new EdgeInsets.fromLTRB(20.0, 40.0, 20.0, 40.0),
color: Colors.green,
child: new Column(
children: [
new Text("Ableitungen"),
]
),
),
когда пользователь нажимает на контейнер, я хочу, чтобы метод onPressed был запущен (например, это можно сделать с помощью IconButtons). Как я могу добиться такого поведения с контейнерами?
спасибо заранее
3 ответов
Я думаю, вы можете использовать виджет GestureDetector следующим образом:
new GestureDetector(
onTap: (){
print("Container clicked");
},
child: new Container(
width: 500.0,
padding: new EdgeInsets.fromLTRB(20.0, 40.0, 20.0, 40.0),
color: Colors.green,
child: new Column(
children: [
new Text("Ableitungen"),
]
),
)
);
самое простое решение-обернуть Container
на GestureRecognizer
, но подумайте об использовании InkWell
или FlatButton
Если вы создаете приложение Material design. Эти виджеты будут показывать визуальную реакцию всплеска при касании.
просто хотел добавить на В Dumbfounds ответ (принято ans выше)
Если вы используете GestureDetector или чернильница для обработки щелчка группы значков и текста используйте значок виджет вместо IconButton для отображения значка в качестве метода onPressed IconButton возьмет на себя метод onTap GestureDetector / InkWell, и в результате onTap будет работать только при нажатии на кнопку текст.
пример
@override
Widget build(BuildContext context) {
return Row(mainAxisSize: MainAxisSize.min, children: [
GestureDetector(
onTap: () {
_toggleFavorite();
},
child: Row(
children: [
Container(
padding: EdgeInsets.all(0.0),
child: _isFavorited ? Icon(Icons.star, color: Colors.red[500]) : Icon(Icons.star_border),
),
SizedBox(
width: 18.0,
child: Container(
child: Text('$_favoriteCount'),
),
)
],
),
)
]);
}
}