Метод toPaint
Метод toPaint класса BoxShadow переносит color и blurRadius в Paint для drawShadow.
Кисть Paint получает цвет тени и размытие.
Её используют там, где тень рисуют вручную на холсте.
Синтаксис
shadow.toPaint()
Пример
Давайте нарисуем тень через toPaint:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: CustomPaint(
size: const Size(220, 100),
painter: _ShadowPaint(),
),
),
),
),
);
}
class _ShadowPaint extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
final shadow = BoxShadow(color: Colors.black45, blurRadius: 4, offset: Offset(4, 4));
final rect = Rect.fromLTWH(40, 20, 120, 50);
canvas.drawRect(rect.shift(shadow.offset), shadow.toPaint());
canvas.drawRect(rect, Paint()..color = Colors.white);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
На экране белый блок с тенью.
Пример
Давайте увеличим blurRadius:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: CustomPaint(
size: const Size(220, 100),
painter: _ShadowPaint2(),
),
),
),
),
);
}
class _ShadowPaint2 extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
final shadow = BoxShadow(color: Colors.black38, blurRadius: 12, offset: Offset(6, 6));
final rect = Rect.fromLTWH(30, 15, 140, 60);
canvas.drawRect(rect.shift(shadow.offset), shadow.toPaint());
canvas.drawRect(rect, Paint()..color = Colors.amber);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
На экране блок с более мягкой тенью.
Смотрите также
-
класс
StadiumBorder,
капсула для кнопки и карточки -
класс
CircleBorder,
круг для кнопки и карточки -
класс
LinearGradient,
линейный градиент -
класс
RadialGradient,
радиальный градиент