Метод maybeOf
Метод maybeOf виджета Theme
ищет ближайшую тему от контекста вверх по дереву.
Если темы нет, метод возвращает пустое значение и не бросает ошибку.
Метод of в том же случае бросает ошибку.
Синтаксис
Theme.maybeOf(context)
Параметры
| Параметр | Описание |
|---|---|
context |
BuildContext, от которого поднимаются по дереву.
|
Пример
Давайте прочитаем тему там, где Theme задан:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Theme(
data: ThemeData.light(),
child: Builder(
builder: (context) {
var res = Theme.maybeOf(context);
print(res?.brightness);
return Scaffold(
body: Center(
child: Text('abcde'),
),
);
},
),
),
),
);
}
На экране по центру появится строка 'abcde',
потому что maybeOf нашёл Theme в предках.
Пример
Давайте вызовем maybeOf без Theme в предках:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Builder(
builder: (context) {
var res = Theme.maybeOf(context);
print(res == null);
return Scaffold(
body: Center(
child: Text('12345'),
),
);
},
),
),
);
}
На экране по центру появится '12345';
maybeOf вернёт ThemeData от MaterialApp без отдельного виджета Theme.