Метод createShader
Метод createShader класса SweepGradient возвращает Shader, который заливает область цветами SweepGradient.
Прямоугольник Rect задаёт область, вокруг центра которой идёт угловой переход.
Результат передают в кисть холста.
Синтаксис
SweepGradient(colors: [Colors.red, Colors.blue]).createShader(Rect.fromLTWH(0, 0, 100, 50))
Параметры
| Параметр | Описание |
|---|---|
rect |
Прямоугольник, в котором строится Shader.
|
Пример
Давайте зальём область шейдером градиента:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: CustomPaint(
size: const Size(220, 100),
painter: _SweepGradientShaderPainter(),
),
),
),
),
);
}
class _SweepGradientShaderPainter extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
final rect = Rect.fromLTWH(0, 0, size.width, size.height);
final gradient = SweepGradient(colors: [Colors.green, Colors.purple]);
final paint = Paint()..shader = gradient.createShader(rect);
canvas.drawRect(rect, paint);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
На экране виден градиент внутри CustomPaint.
Пример
Давайте сузим область рисования:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: CustomPaint(
size: const Size(180, 80),
painter: _SweepGradientShaderPainter2(),
),
),
),
),
);
}
class _SweepGradientShaderPainter2 extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
final rect = Rect.fromLTWH(0, 0, size.width, size.height);
final gradient = SweepGradient(colors: [Colors.green, Colors.purple]);
final paint = Paint()..shader = gradient.createShader(rect);
canvas.drawRect(rect, paint);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
На экране градиент в меньшем прямоугольнике.
Смотрите также
-
класс
RadialGradient,
радиальный градиент -
класс
LinearGradient,
линейный градиент -
класс
Offset,
точка или сдвиг -
класс
Size,
ширина и высота