Класс 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,
кисть холста