Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
692 of 1024 menu
◀ ▶

Метод 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.

Смотрите также

  • метод lerp,
    который плавно смешивает две ThemeData
  • метод copyWith,
    у класса ColorScheme с тем же смыслом
  • класс ThemeData,
    который копирует метод copyWith
  • виджет Theme,
    которому передают изменённую ThemeData
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить