Класс 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,
которое переключает светлую и тёмную тему