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

Метод didPop

Метод didPop класса NavigatorObserver вызывают после того, как верхний маршрут сняли. route это снятый Route. previousRoute это маршрут, который стал верхним.

Синтаксис

@override void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) {}

Параметры

Параметр Описание
route Route, который убрали со стопки.
previousRoute Route, который стал верхним после pop.

Пример

Давайте залогируем didPop при закрытии экрана:

import 'package:flutter/material.dart'; class PopLog extends NavigatorObserver { @override void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) { debugPrint('12345'); } } class PopPage extends StatelessWidget { const PopPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.pop(context); }, child: const Text('abcde'), ), ), ); } } void main() { runApp( MaterialApp( navigatorObservers: [PopLog()], home: Builder( builder: (context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.push( context, MaterialPageRoute<void>( builder: (ctx) => const PopPage(), ), ); }, child: const Text('open'), ), ), ); }, ), ), ); }

На экране откройте второй маршрут и нажмите pop; didPop выведет '12345' в консоль.

Пример

Давайте прочитаем name снятого маршрута:

import 'package:flutter/material.dart'; class NamePopLog extends NavigatorObserver { @override void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) { debugPrint(route.settings.name ?? 'none'); } } void main() { runApp( MaterialApp( navigatorObservers: [NamePopLog()], home: Scaffold( body: Center( child: Text('abcde'), ), ), ), ); }

На экране корневой текст; при pop верхнего маршрута observer напечатает его name.

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

  • метод didPush,
    вызывается при push
  • метод pop,
    приводит к didPop
  • класс NavigatorObserver,
    базовый класс
  • виджет PopScope,
    контролирует pop с UI
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить