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

Метод removeObserver

Метод removeObserver миксина WidgetsBinding отписывает объект от. Вызывают в dispose, чтобы не держать ссылку на State.

Синтаксис

WidgetsBinding.instance.removeObserver(observer)

Параметры

ПараметрОписание
observerТот же экземпляр, что передавали в addObserver.

Пример

Давайте снимем наблюдателя в dispose:

import 'package:flutter/material.dart'; void main() => runApp(MaterialApp(home: Scaffold(body: Center(child: ObserverDemo())))); class ObserverDemo extends StatefulWidget { const ObserverDemo({super.key}); @override State<ObserverDemo> createState() => _ObserverDemoState(); } class _ObserverDemoState extends State<ObserverDemo> with WidgetsBindingObserver { @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); } @override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override Widget build(BuildContext context) => const Text('abcde'); }

На экране текст 'abcde', после dispose колбэки жизни не придут.

Пример

Давайте снимем внешний логгер:

import 'package:flutter/material.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); final logger = MetricsLogger(); WidgetsBinding.instance.addObserver(logger); WidgetsBinding.instance.removeObserver(logger); runApp(MaterialApp(home: Scaffold(body: Center(child: Text('12345'))))); } class MetricsLogger with WidgetsBindingObserver { }

На экране текст '12345', logger больше не слушает метрики.

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

  • метод addObserver,
    который добавляет пару к removeObserver
  • миксин WidgetsBindingObserver,
    который нужно снимать в dispose
  • миксин WidgetsBinding,
    хранит список наблюдателей
  • метод didChangeMetrics,
    который перестанет вызываться после removeObserver
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить