Метод addObserver
Метод addObserver миксина WidgetsBinding подключает объект с миксином
WidgetsBindingObserver
к WidgetsBinding.instance.
Синтаксис
WidgetsBinding.instance.addObserver(observer)
Параметры
| Параметр | Описание |
|---|---|
observer | Экземпляр с миксином WidgetsBindingObserver. |
Пример
Давайте выведем фазу жизни приложения:
import 'package:flutter/material.dart';
void main()
{
WidgetsFlutterBinding.ensureInitialized();
runApp(MaterialApp(home: Scaffold(body: Center(child: LifecycleEcho()))));
}
class LifecycleEcho extends StatefulWidget
{
const LifecycleEcho({super.key});
@override
State<LifecycleEcho> createState() => _LifecycleEchoState();
}
class _LifecycleEchoState extends State<LifecycleEcho> with WidgetsBindingObserver
{
String phase = 'abcde';
@override
void initState()
{
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose()
{
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state)
{
setState(() => phase = state.name);
}
@override
Widget build(BuildContext context) => Text(phase);
}
На экране текст покажет имя текущей AppLifecycleState.
Пример
Давайте зарегистрируем отдельный класс-наблюдатель:
import 'package:flutter/material.dart';
void main()
{
WidgetsFlutterBinding.ensureInitialized();
final log = LifecycleLog();
WidgetsBinding.instance.addObserver(log);
runApp(MaterialApp(home: Scaffold(body: Center(child: Text('12345')))));
}
class LifecycleLog with WidgetsBindingObserver
{
void didChangeMetrics() { }
}
На экране текст '12345', наблюдатель получит didChangeMetrics при смене размеров.
Смотрите также
-
метод
removeObserver,
который снимает наблюдателя -
миксин
WidgetsBindingObserver,
который реализуют для колбэков -
перечисление
AppLifecycleState,
которое приходит вdidChangeAppLifecycleState -
миксин
WidgetsBinding,
у которого вызываютaddObserver