Миксин WidgetsBindingObserver
Миксин WidgetsBindingObserver подключают через
addObserver.
Колбэки по умолчанию пустые, переопределяют нужные методы.
Методы
| Метод | Описание |
|---|---|
didChangeAppLifecycleState |
Вызывают при смене фазы жизни приложения. |
didChangeMetrics |
Вызывают, когда меняются размер окна или системные отступы. |
didChangePlatformBrightness |
Сообщает, что система сменила светлую тему на тёмную или обратно. |
didHaveMemoryPressure |
Предупреждает, что системе не хватает памяти. |
Пример
Давайте покажем resumed на экране:
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(home: Scaffold(body: Center(child: LifeLabel()))));
class LifeLabel extends StatefulWidget {
const LifeLabel({super.key});
@override State<LifeLabel> createState() => _LifeLabelState();
}
class _LifeLabelState extends State<LifeLabel> with WidgetsBindingObserver {
String t = 'abcde';
@override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); }
@override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); }
@override void didChangeAppLifecycleState(AppLifecycleState s) { setState(() => t = s.name); }
@override Widget build(BuildContext c) => Text(t);
}
На экране имя фазы жизни заменит 'abcde'.
Пример
Давайте отреагируем на didChangePlatformBrightness:
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(home: Scaffold(body: Center(child: Text('12345')))));
class BrightHook with WidgetsBindingObserver {
void didChangePlatformBrightness() { debugPrint('abcde'); }
}
На экране текст '12345', в консоль уйдёт 'abcde' при смене темы.
Смотрите также
-
миксин
WidgetsBinding,
который хранит список наблюдателей -
перечисление
AppLifecycleState,
которое приходит вdidChangeAppLifecycleState -
метод
addObserver,
который регистрирует миксин -
функция
debugPrint,
которой пишут из колбэков