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