Flutter: Как сделать карту доступной?
У меня просто простая Карточка, как new Card(child: new Text('My cool card'))
и я хочу, чтобы у меня была возможность щелкнуть в любом месте, чтобы запустить какую-то функцию, за исключением того, что на onPressed
нет метода onPressed
. Я мог бы добавить кнопку на дно, но это не идеально для этой ситуации.
Кто-нибудь знает, как сделать всю карту доступной?
Ответы
Ответ 1
Флаттер используют композицию поверх свойств.
Оберните нужный виджет в интерактивный, чтобы получить то, что вам нужно.
Некоторые интерактивные виджеты: GestureDetector
, InkWell
, InkResponse
.
new GestureDetector(
onTap: ...,
child: new Card(...),
);
Ответ 2
Flutter предоставляет виджет InkWell. Регистрируя обратный вызов, вы можете решить, что произойдет, когда пользователь нажмет на карточку (называется тап в флаттере). InkWell также реализует волновой эффект Material Design
Card(
child: new InkWell(
onTap: () {
print("tapped");
},
child: Container(
width: 100.0,
height: 100.0,
),
),
),
Ответ 3
Я думаю, что вы также можете использовать InkWell помимо GestureDetector, просто оберните карту внутри InkWell()
InkWell(
onTap: (){ print("Card Clicked"); }
child: new Card(),
);
Ответ 4
Вы можете использовать Inkwell и вставить splashColor, который, по щелчку пользователя, создает эффект отскока с выбранным цветом на карте. Это в основном используется в дизайне материала.
return Card(
color: item.completed ? Colors.white70 : Colors.white,
elevation: 8,
child: InkWell(
splashColor: "Insert color when user tap on card",
onTap: () async {
},
),
);