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

Метод pushReplacement

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

Синтаксис

Navigator.pushReplacement( context, MaterialPageRoute<void>( builder: (context) => nextScreen, ), )

Параметры

ПараметрОписание
contextBuildContext под Navigator.
newRouteRoute, который заменит верхний.
oldRouteНеобязательный Route, который снимают.

Пример

Давайте заменить экран входа на главный:

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

На экране кнопка 'abcde'; pushReplacement заменит login на '12345' без возврата назад.

Пример

Давайте явно передать oldRoute:

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

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

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

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