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 {

      },
    ),
);