Перечисление 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,
который поглощает события для поддерева