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

Метод pushAndRemoveUntil

Метод pushAndRemoveUntil виджета Navigator кладёт новый маршрут сверху и снимает маршруты под ним. Предикат вызывают для каждого экрана снизу вверх. Истина оставляет экран, ложь снимает его.

Синтаксис

Navigator.pushAndRemoveUntil( context, MaterialPageRoute<void>( builder: (context) => homeScreen, ), (route) => false, )

Параметры

ПараметрОписание
contextBuildContext под Navigator.
newRouteRoute, который станет верхним.
predicateФункция: true оставляет Route в стопке.

Пример

Давайте очистить стопку и открыть home:

import 'package:flutter/material.dart'; class DeepPage extends StatelessWidget { const DeepPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.pushAndRemoveUntil( context, MaterialPageRoute<void>( builder: (ctx) => const Scaffold( body: Center( child: Text('abcde'), ), ), ), (route) => false, ); }, child: const Text('12345'), ), ), ); } } void main() { runApp( MaterialApp( home: DeepPage(), ), ); }

На экране кнопка '12345'; pushAndRemoveUntil оставит один экран с 'abcde'.

Пример

Давайте оставить только первый Route:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Builder( builder: (context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.pushAndRemoveUntil( context, MaterialPageRoute<void>( builder: (ctx) => const Scaffold( body: Center( child: Text('12345'), ), ), ), (route) => route.isFirst, ); }, child: const Text('abcde'), ), ), ); }, ), ), ); }

На экране после вызова останется корневой маршрут и новый верхний с '12345'.

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

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить