Метод copyWith
Метод copyWith класса ThemeData принимает новые значения для colorScheme, textTheme, scaffoldBackgroundColor и других полей. Непереданные параметры копируются из исходной темы.
Синтаксис
themeData.copyWith(
scaffoldBackgroundColor: color,
)
Параметры
| Параметр | Описание |
|---|---|
colorScheme |
Новая ColorScheme, если нужно заменить.
|
textTheme |
Новая TextTheme.
|
scaffoldBackgroundColor |
Цвет фона у Scaffold.
|
Пример
Давайте сменим только фон Scaffold:
import 'package:flutter/material.dart';
void main()
{
var base = ThemeData.light();
var res = base.copyWith(
scaffoldBackgroundColor: Colors.grey.shade200,
);
print('12345');
print(res.scaffoldBackgroundColor);
}
Результат выполнения кода
Color(alpha: 1.0000, red: 0.9333, green: 0.9333, blue: 0.9333, colorSpace: ColorSpace.sRGB)
Пример
Давайте передать copyWith в MaterialApp:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
theme: ThemeData.light().copyWith(
scaffoldBackgroundColor: Colors.lime.shade50,
),
home: Scaffold(
body: Center(
child: Text('abcde'),
),
),
),
);
}
На экране фон body станет светло-зелёным,
остальные цвета темы останутся светлыми Material.