Метод maybePop
Метод maybePop виджета Navigator
снимает верхний экран, если под ним есть другой.
На корневом экране метод возвращает ложь и экран не трогает.
Необязательный результат уходит предыдущему Route.
Синтаксис
final didPop = await Navigator.maybePop(context);
Параметры
| Параметр | Описание |
|---|---|
context | BuildContext под 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 в стопке.