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

Метод maybePop

Метод maybePop виджета Navigator снимает верхний экран, если под ним есть другой. На корневом экране метод возвращает ложь и экран не трогает. Необязательный результат уходит предыдущему Route.

Синтаксис

final didPop = await Navigator.maybePop(context);

Параметры

ПараметрОписание
contextBuildContext под Navigator.
resultНеобязательный результат для предыдущего Route.

Пример

Давайте вызовем maybePop на корневом экране:

import 'package:flutter/material.dart'; class MaybeRoot extends StatelessWidget { const MaybeRoot({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () async { var didPop = await Navigator.maybePop(context); print(didPop); }, child: const Text('abcde'), ), ), ); } } void main() { runApp( MaterialApp( home: MaybeRoot(), ), ); }

На экране кнопка 'abcde'; maybePop вернёт false и экран останется.

Пример

Давайте вызовем maybePop на втором экране:

import 'package:flutter/material.dart'; class MaybeSecond extends StatelessWidget { const MaybeSecond({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.maybePop(context); }, child: const Text('12345'), ), ), ); } } void main() { runApp( MaterialApp( home: MaybeSecond(), ), ); }

На экране maybePop закроет маршрут, если над ним есть другой Route в стопке.

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

  • метод pop,
    который всегда пытается снять Route
  • метод canPop,
    проверка перед maybePop
  • метод of,
    доступ к NavigatorState
  • виджет PopScope,
    контроль системного назад
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить