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

Метод 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,
    который выводит рисунок на экран
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить