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

Метод deactivate

Метод deactivate класса State идёт перед dispose, когда элемент временно убирают из дерева. Если виджет вернут на место, вызовут activate без нового createState.

Синтаксис

@override void deactivate()

Пример

Давайте спрячем виджет и увидим deactivate в логе:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: HideDemo())); } class HideDemo extends StatefulWidget { const HideDemo({super.key}); @override State<HideDemo> createState() => _HideDemoState(); } class _HideDemoState extends State<HideDemo> { var visible = true; @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ if (visible) const TrackedBox(), ElevatedButton( onPressed: () => setState(() => visible = !visible), child: const Text('abcde'), ), ], ), ), ); } } class TrackedBox extends StatefulWidget { const TrackedBox({super.key}); @override State<TrackedBox> createState() => _TrackedBoxState(); } class _TrackedBoxState extends State<TrackedBox> { @override void deactivate() { print('deactivate'); super.deactivate(); } @override Widget build(BuildContext context) { return const Text('12345'); } }

На экране кнопка 'abcde' спрячет текст '12345' и вызовет deactivate.

Пример

Давайте выведем сообщение при deactivate:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: OnceLeaf(), ), ), ), ); } class OnceLeaf extends StatefulWidget { const OnceLeaf({super.key}); @override State<OnceLeaf> createState() => _OnceLeafState(); } class _OnceLeafState extends State<OnceLeaf> { @override void deactivate() { print('leaf off'); super.deactivate(); } @override Widget build(BuildContext context) { return const Text('abcde'); } }

Результат выполнения кода

leaf off

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

  • метод activate,
    который вызывается после возврата из deactivate
  • метод dispose,
    который идёт, если State больше не вернут
  • смесь AutomaticKeepAliveClientMixin,
    которая удерживает State при прокрутке
  • класс State,
    к которому относится deactivate
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить