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

Метод popAndPushNamed

Метод popAndPushNamed виджета Navigator сначала снимает текущий экран, затем открывает следующий по имени. Имя берут из таблицы маршрутов. Результат снятого экрана можно передать отдельно.

Синтаксис

Navigator.popAndPushNamed(context, '/next');

Параметры

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

Пример

Давайте заменить экран через popAndPushNamed:

import 'package:flutter/material.dart'; Route<dynamic>? onGenerateRoute(RouteSettings settings) { if (settings.name == '/next') { return MaterialPageRoute<void>( settings: settings, builder: (ctx) => Scaffold( body: Center( child: Text('12345'), ), ), ); } return MaterialPageRoute<void>( settings: settings, builder: (ctx) => Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.popAndPushNamed(ctx, '/next'); }, child: const Text('abcde'), ), ), ), ); } void main() { runApp( MaterialApp( initialRoute: '/first', onGenerateRoute: onGenerateRoute, ), ); }

На экране кнопка 'abcde'; popAndPushNamed откроет '/next' с '12345' без роста стопки.

Пример

Давайте передать arguments при popAndPushNamed:

import 'package:flutter/material.dart'; Route<dynamic>? routes(RouteSettings settings) { if (settings.name == '/show') { return MaterialPageRoute<void>( settings: settings, builder: (ctx) => Scaffold( body: Center( child: Text('${settings.arguments}'), ), ), ); } return MaterialPageRoute<void>( settings: settings, builder: (ctx) => Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.popAndPushNamed( ctx, '/show', arguments: 'abcde', ); }, child: const Text('go'), ), ), ), ); } void main() { runApp( MaterialApp( initialRoute: '/form', onGenerateRoute: routes, ), ); }

На экране после перехода по центру будет 'abcde' из arguments.

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

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