Метод hitTest
Метод hitTest класса CustomPainter
получает точку и возвращает истину, если касание нужно отдать этому рисунку.
Базовая версия отвечает истиной на любую точку. Свою область задают в наследнике.
Синтаксис
_Mark().hitTest(Offset(10, 10))
Параметры
| Параметр | Описание |
|---|---|
position |
Точка касания относительно рисунка. |
Пример
Давайте проверим точку в левой части, где метод отвечает истиной:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: Builder(
builder: (context)
{
bool yes = _Mark().hitTest(Offset(10, 10));
return Text(yes ? 'abcde' : '12345');
},
),
),
),
),
);
}
class _Mark extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
}
@override
bool hitTest(Offset position)
{
return position.dx < 40;
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate)
{
return false;
}
}
На экране abcde. Точка с горизонталью 10 левее порога 40, поэтому метод вернул истину.
Пример
Давайте проверим точку правее порога:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: Builder(
builder: (context)
{
bool yes = _Mark().hitTest(Offset(80, 10));
return Text(yes ? 'abcde' : '12345');
},
),
),
),
),
);
}
class _Mark extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
}
@override
bool hitTest(Offset position)
{
return position.dx < 40;
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate)
{
return false;
}
}
На экране 12345. Горизонталь 80 больше 40, метод вернул ложь.
Смотрите также
-
метод
paint,
который рисует фигуру на холсте -
метод
shouldRepaint,
который решает, нужно ли рисовать кадр заново -
класс
Path,
который хранит контур фигуры -
класс
CustomPaint,
который выводит рисунок на экран