Метод of
Метод of виджета Theme принимает context и поднимается к ближайшему Theme. На выходе объект ThemeData. Без Theme в предках Flutter выбросит ошибку.
Синтаксис
Theme.of(context)
Параметры
| Параметр | Описание |
|---|---|
context |
BuildContext виджета, от которого ищут Theme.
|
Пример
Давайте выведем brightness темы на экран:
import 'package:flutter/material.dart';
class BrightnessLabel extends StatelessWidget
{
const BrightnessLabel({super.key});
@override
Widget build(BuildContext context)
{
var data = Theme.of(context);
return Text('abcde');
}
}
void main()
{
runApp(
MaterialApp(
theme: ThemeData.light(),
home: Theme(
data: ThemeData.light(),
child: Scaffold(
body: Center(
child: BrightnessLabel(),
),
),
),
),
);
}
На экране по центру появится строка 'abcde'
на фоне светлой ThemeData из Theme.of.
Пример
Давайте прочитаем цвет текста из textTheme:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Theme(
data: ThemeData(
textTheme: TextTheme(
bodyMedium: TextStyle(color: Colors.blue),
),
),
child: Builder(
builder: (context) {
var style = Theme.of(context).textTheme.bodyMedium;
return Scaffold(
body: Center(
child: Text(
'12345',
style: style,
),
),
);
},
),
),
),
);
}
На экране строка '12345' станет синей
из настроенного textTheme.