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

Класс ThemeData

Класс ThemeData описывает внешний вид приложения Material: фон, типографику, кнопки. Главные части - ColorScheme, TextTheme и brightness типа Brightness. Объект передают в theme у MaterialApp или в data у виджета Theme. Готовые наборы дают методы light и dark.

Синтаксис

ThemeData( colorScheme: colorScheme, textTheme: textTheme, )

Параметры

Параметр Описание
colorScheme Роли цветов интерфейса. Принимает ColorScheme.
textTheme Стили заголовков и абзацев. Принимает TextTheme.
brightness Светлая или тёмная тема. Принимает Brightness.

Методы

Метод Описание
copyWith Принимает новые значения для colorScheme, textTheme, scaffoldBackgroundColor и других полей.
dark Фабричный метод dark у ThemeData возвращает готовую тёмную тему.
lerp Принимает две темы и долю t от 0 до 1. Давайте разберём вызов на примерах.
light Фабричный метод light у ThemeData возвращает готовую светлую тему.

Пример

Давайте зададим светлую тему у MaterialApp:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( theme: ThemeData.light(), home: Scaffold( body: Center( child: Text('abcde'), ), ), ), ); }

На экране приложение откроется со стандартной светлой палитрой Material.

Пример

Давайте соберём ThemeData с seed-цветом:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( theme: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: Colors.indigo, ), ), home: Scaffold( appBar: AppBar( title: Text('12345'), ), body: Center( child: Text('abcde'), ), ), ), ); }

На экране AppBar и акценты подстроятся под indigo из ColorScheme.fromSeed.

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

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