Метод platformBrightnessOf
Метод platformBrightnessOf виджета
MediaQuery он совпадает с
и возвращает MediaQuery.of(context).platformBrightnessBrightness.light или Brightness.dark.
Значение отражает системную тему, а не только ThemeData приложения.
Синтаксис
MediaQuery.platformBrightnessOf(context)
Параметры
| Параметр | Описание |
|---|---|
context |
BuildContext виджета под MediaQuery.
|
Пример
Давайте выведем текущую яркость платформы:
import 'package:flutter/material.dart';
class BrightnessLabel extends StatelessWidget
{
const BrightnessLabel({super.key});
@override
Widget build(BuildContext context)
{
var res = MediaQuery.platformBrightnessOf(context);
return Text('$res');
}
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: BrightnessLabel(),
),
),
),
);
}
На экране появится строка с Brightness.light или Brightness.dark.
Пример
Давайте покрасим фон по системной теме:
import 'package:flutter/material.dart';
class SystemBackdrop extends StatelessWidget
{
const SystemBackdrop({super.key});
@override
Widget build(BuildContext context)
{
var dark =
MediaQuery.platformBrightnessOf(context) == Brightness.dark;
var bg = dark ? Colors.grey.shade900 : Colors.grey.shade200;
var fg = dark ? Colors.white : Colors.black;
return ColoredBox(
color: bg,
child: Center(
child: Text(
'abcde',
style: TextStyle(color: fg),
),
),
);
}
}
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: SystemBackdrop(),
),
),
);
}
На экране фон и цвет текста подстроятся под светлую или тёмную систему.
Смотрите также
-
метод
of,
который возвращает platformBrightness вMediaQueryData -
метод
copyWith,
который может подменить platformBrightness локально -
класс
MediaQueryData,
где хранится полеplatformBrightness -
метод
textScalerOf,
который читает другую системную настройку изMediaQuery