Класс RRect
Класс RRect хранит прямоугольник и радиусы углов.
Его рисует Canvas командой drawRRect.
Обычная вёрстка чаще берёт BorderRadius внутри BoxDecoration, а не этот класс напрямую.
Синтаксис
RRect.fromRectAndRadius(rect, Radius.circular(12))
Методы
| Метод | Описание |
|---|---|
contains |
Проверяет, лежит ли точка внутри скруглённого прямоугольника. |
deflate |
Сжимает скруглённый прямоугольник и сохраняет радиусы углов. |
fromLTRBR |
Собирает скруглённый прямоугольник из четырёх краёв и одного радиуса. |
fromRectAndRadius |
Скругляет прямоугольник одним радиусом на всех углах. |
inflate |
Расширяет скруглённый прямоугольник и сохраняет радиусы углов. |
shift |
Сдвигает скруглённый прямоугольник, не меняя размер и радиусы. |
Пример
Давайте скруглённый Rect:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: CustomPaint(
size: const Size(220, 100),
painter: _RRectDemo(),
),
),
),
),
);
}
class _RRectDemo extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
final rr = RRect.fromRectAndRadius(Rect.fromLTWH(20, 15, 180, 70), Radius.circular(16));
canvas.drawRRect(rr, Paint()..color = Colors.lime);
}
@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: _RRectDemo2(),
),
),
),
),
);
}
class _RRectDemo2 extends CustomPainter
{
@override
void paint(Canvas canvas, Size size)
{
final rr = RRect.fromRectAndRadius(Rect.fromLTWH(20, 15, 180, 70), Radius.circular(32));
canvas.drawRRect(rr, Paint()..color = Colors.lime.shade700);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
На экране более круглые углы.
Смотрите также
-
класс
Rect,
прямоугольник -
класс
Size,
ширина и высота -
виджет
ColoredBox,
залить дочерний виджет цветом -
виджет
DecoratedBox,
нарисоватьBoxDecoration