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

Класс CustomPainter

Класс CustomPainter реализует метод paint. В него приходят Canvas и размер области. Объект передают в painter у CustomPaint. Второй метод, shouldRepaint, говорит, нужно ли рисовать кадр заново.

Синтаксис

class BoxPainter extends CustomPainter

Методы

Метод Описание
hitTest Проверяет попадание касания в рисунок.
paint Рисует на Canvas в CustomPaint.
shouldRepaint Решает, перерисовывать ли виджет.

Пример

Давайте нарисуем через CustomPainter:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: CustomPaint( size: const Size(220, 100), painter: _MyPainter(), ), ), ), ), ); } class _MyPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { canvas.drawRect(Rect.fromLTWH(30, 20, 160, 60), Paint()..color = Colors.cyan); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) => false; }

На экране циановый прямоугольник.

Пример

Давайте добавим линию:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: CustomPaint( size: const Size(220, 100), painter: _MyPainter2(), ), ), ), ), ); } class _MyPainter2 extends CustomPainter { @override void paint(Canvas canvas, Size size) { canvas.drawRect(Rect.fromLTWH(30, 20, 160, 60), Paint()..color = Colors.cyan); canvas.drawLine(Offset(30, 80), Offset(190, 20), Paint()..color = Colors.black..strokeWidth = 2); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) => false; }

На экране прямоугольник и диагональ.

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

  • виджет CustomPaint,
    свой рисунок
  • виджет RotatedBox,
    поворот на четверти оборота
  • класс Canvas,
    холст внутри CustomPainter
  • класс Paint,
    кисть холста
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить