Возврат 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.