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

Возврат Navigator.pop в Flutter

Экран, открытый через Navigator.push, лежит поверх предыдущего. Вернуться - убрать верхний маршрут методом Navigator.pop с тем же BuildContext, что и у открытого экрана.

Если у AppBar есть предыдущий маршрут в стеке, Flutter сам рисует кнопку «назад» и вызывает pop. Жест «назад» на телефоне снимает тот же маршрут. Дополнительный IconButton в leading для учебного push обычно не нужен:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: HomeScreen())); } class HomeScreen extends StatelessWidget { const HomeScreen({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Home')), body: Center( child: ElevatedButton( onPressed: () { Navigator.push( context, MaterialPageRoute<void>( builder: (context) => const InfoScreen(), ), ); }, child: const Text('Info'), ), ), ); } } class InfoScreen extends StatelessWidget { const InfoScreen({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Help')), body: Center( child: TextButton( onPressed: () { Navigator.pop(context); }, child: const Text('Close'), ), ), ); } }

На втором экране оставьте только текст и стрелку в AppBar: убедитесь, что она возвращает на главную. Добавьте FloatingActionButton с иконкой закрытия, который тоже вызывает Navigator.pop.

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