Метод pushReplacement
Метод pushReplacement виджета Navigator
убирает верхний экран и ставит на его место новый.
Вернуться на снятый экран уже нельзя.
Новый экран это Route.
Синтаксис
Navigator.pushReplacement(
context,
MaterialPageRoute<void>(
builder: (context) => nextScreen,
),
)
Параметры
| Параметр | Описание |
|---|---|
context | BuildContext под Navigator. |
newRoute | Route, который заменит верхний. |
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'.
Смотрите также
- метод
push,
кладётRouteповерх текущего - метод
popAndPushNamed,popи именованныйpush - класс
MaterialPageRoute,
новыйRouteвpushReplacement - метод
pushAndRemoveUntil,pushсо срезом стопки