Метод shouldRepaint
Метод shouldRepaint класса CustomPainter сравнивает новый painter со старым.
Истина заставляет перерисовать кадр, ложь оставляет прежний рисунок.
Сравнивают поля нового художника и прежнего.
Синтаксис
bool shouldRepaint(covariant CustomPainter oldDelegate)
Пример
Давайте вернём false из shouldRepaint:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: CustomPaint(
size: const Size(220, 100),
painter: _RepaintPainter(),
),
),
),
),
);
}
class _RepaintPainter extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
canvas.drawCircle(Offset(110, 50), 30, Paint()..color = Colors.teal);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
CustomPaint не перерисовывается без нового painter.
Пример
Давайте нарисуем другой цвет тем же painter:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: CustomPaint(
size: const Size(220, 100),
painter: _RepaintPainter2(),
),
),
),
),
);
}
class _RepaintPainter2 extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
canvas.drawCircle(Offset(110, 50), 30, Paint()..color = Colors.deepOrange);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
На экране оранжевый круг при новом экземпляре painter.
Смотрите также
-
виджет
CustomPaint,
свой рисунок -
виджет
RotatedBox,
поворот на четверти оборота -
класс
Canvas,
холст внутриCustomPainter -
класс
Paint,
кисть холста