Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
684 of 1024 menu
◀ ▶

Перечисление HitTestBehavior

Перечисление HitTestBehavior передают в параметр behavior у GestureDetector, Listener и RawGestureDetector. От выбора зависит, получит ли виджет событие на прозрачной области.

Синтаксис

HitTestBehavior.opaque

Значения

Значение Описание
deferToChild Виджет участвует в hit test только там, где попали в дочерний виджет.
opaque Виджет считается непрозрачным для hit test на всей своей области.
translucent Виджет получает события на всей области, но пропускает hit test дальше.

Пример

Давайте поймаем tap на пустой области GestureDetector:

import 'package:flutter/material.dart'; class OpaqueTap extends StatefulWidget { const OpaqueTap({super.key}); @override State<OpaqueTap> createState() => _OpaqueTapState(); } class _OpaqueTapState extends State<OpaqueTap> { var label = 'abcde'; @override Widget build(BuildContext context) { return GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { setState(() { label = '12345'; }); }, child: SizedBox( width: 200, height: 120, child: Center(child: Text(label)), ), ); } } void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: OpaqueTap(), ), ), ), ); }

На экране tap сработает по всему прямоугольнику 200×120, не только по тексту.

Смотрите также

  • виджет GestureDetector,
    которому передают behavior
  • виджет Listener,
    который тоже принимает HitTestBehavior
  • виджет IgnorePointer,
    который полностью отключает события
  • виджет AbsorbPointer,
    который поглощает события для поддерева
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить