Метод copyWith
Метод copyWith класса BoxDecoration
копирует оформление и подставляет новые значения.
Поле, которое не передали, остаётся прежним.
Синтаксис
decoration.copyWith(color: Color(0xFFC62828))
Параметры
| Параметр | Описание |
|---|---|
color |
Цвет Color.
|
border |
Новая рамка. |
borderRadius |
Новое скругление углов. |
boxShadow |
Новый список теней. |
gradient |
Новый градиент. Если он задан, заливка цветом не рисуется. |
Пример
Давайте заменим синюю заливку на красную и оставим скругление:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: Container(
padding: EdgeInsets.all(16),
decoration: BoxDecoration(
color: Color(0xFF1565C0),
borderRadius: BorderRadius.circular(16),
).copyWith(color: Color(0xFFC62828)),
child: Text('abcde'),
)
),
),
),
);
}
На экране красная карточка со строкой abcde и скруглением, которое было задано до замены.
Пример
Давайте добавим рамку, не меняя заливку:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: Container(
padding: EdgeInsets.all(16),
decoration: BoxDecoration(
color: Color(0xFF1565C0),
).copyWith(
border: Border.all(color: Color(0xFFFFFFFF), width: 4),
),
child: Text('12345'),
)
),
),
),
);
}
На экране синяя карточка со строкой 12345 и белой рамкой. Цвет заливки остался прежним.
Смотрите также
-
метод
lerp,
который смешивает два оформления в заданной доле -
метод
scale,
который умножает толщину рамки и размытие тени -
класс
BorderRadius,
который задаёт скругление углов оформления -
класс
Container,
который рисует оформление вокруг дочернего виджета