Метод popUntil
Метод popUntil виджета Navigator обычно предикат проверяет route.isFirst.
Синтаксис
Navigator.popUntil(context, (route) => route.isFirst);
Параметры
| Параметр | Описание |
|---|---|
context | BuildContext под Navigator. |
predicate | Где остановить pop. |
Пример
Давайте вернуться к первому экрану:
import 'package:flutter/material.dart';
class PopUntilPage extends StatelessWidget
{
const PopUntilPage({super.key});
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.popUntil(
context,
(route) => route.isFirst,
);
},
child: const Text('abcde'),
),
),
);
}
}
void main()
{
runApp(
MaterialApp(
home: Builder(
builder: (context) {
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute<void>(
builder: (ctx) => PopUntilPage(),
),
);
},
child: const Text('open'),
),
),
);
},
),
),
);
}
На втором экране кнопка 'abcde'; popUntil вернёт к первому маршруту с кнопкой open.
Пример
Давайте остановить popUntil по имени:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
initialRoute: '/root',
onGenerateRoute: (settings) {
return MaterialPageRoute<void>(
settings: settings,
builder: (ctx) => Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.popUntil(
ctx,
(r) => r.settings.name == '/root',
);
},
child: Text(settings.name ?? '12345'),
),
),
),
);
},
),
);
}
На экране popUntil вернёт к маршруту с name '/root'.
Смотрите также
- метод
pop,
снимает одинRoute - метод
pushAndRemoveUntil,pushи очистка - класс
RouteSettings,
name для предиката - метод
canPop,
проверка передpop