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

Виджет Theme

Виджет Theme кладёт в дерево объект ThemeData, откуда дочерние виджеты читают цвета и стили. Данные темы передают в параметр data. Поддерево оборачивают в параметр child. Прочитать тему из контекста помогают методы of и maybeOf.

Синтаксис

Theme( data: themeData, child: child, )

Параметры

Параметр Описание
data Набор цветов, шрифтов и стилей для поддерева. Принимает ThemeData.
child Дочерний виджет, который получит эту тему.

Методы

Метод Описание
of Возвращает ThemeData из ближайшего Theme в дереве.
maybeOf Возвращает ThemeData или null, если Theme не найден.

Пример

Давайте зададим свой фон у Scaffold через Theme:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Theme( data: ThemeData( scaffoldBackgroundColor: Colors.amber.shade50, ), child: Scaffold( body: Center( child: Text('abcde'), ), ), ), ), ); }

На экране фон body станет светло-янтарным, текст 'abcde' останется по центру.

Пример

Давайте прочитаем primaryColor через Theme.of:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Theme( data: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: Colors.teal, ), ), child: Builder( builder: (context) { var scheme = Theme.of(context).colorScheme; return Scaffold( body: Center( child: Text( '12345', style: TextStyle( color: scheme.primary, ), ), ), ); }, ), ), ), ); }

На экране подпись '12345' окрасится в основной цвет схемы teal.

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

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