GestureDetector и onTap в Flutter
Кнопки Material покрывают типичные случаи,
но нажать можно и на карточку, картинку
или блок текста. Виджет
GestureDetector
оборачивает любого потомка и
слушает жесты. Для простого касания
достаточно onTap.
Внутри child лежит то, что видит
пользователь - например
Card
с ListTile.
Внешний вид потомка при этом не меняется.
При тапе вызывается переданная функция.
Как и у кнопок, пока ограничимся
debugPrint без смены данных на экране:
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: HomePage()));
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
padding: const EdgeInsets.all(12),
children: [
GestureDetector(
onTap: () {
debugPrint('Open: Weather');
},
child: Card(
child: ListTile(
title: const Text('Weather'),
subtitle: const Text('+18°'),
),
),
),
],
),
);
}
}
Оберните Card с одним ListTile
в GestureDetector. По onTap
выведите 'Card tapped'
через debugPrint.