Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
941 of 1024 menu
◀ ▶

Миксин 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' при смене темы.

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить