Во Flutter навигация между различными экранами или страницами является обычным требованием при разработке мобильных приложений. Однако бывают ситуации, когда вам может потребоваться программно закрыть текущую страницу и вернуться к предыдущему экрану. В этой статье мы рассмотрим различные методы достижения этой функциональности во Flutter, сопровождаемые примерами кода.
Метод 1: использование метода Navigator.pop()
Самый простой способ закрыть текущую страницу — использовать метод Navigator.pop(). Он извлекает текущий маршрут из стека навигации и возвращает управление предыдущему маршруту.
import 'package:flutter/material.dart';
// Inside your widget
Navigator.pop(context);
Метод 2: использование именованных маршрутов и Navigator.popUntil()
Если вы используете именованные маршруты в своем приложении Flutter, вы можете использовать метод Navigator.popUntil()для перехода к определенному маршруту путем нажатия маршруты до тех пор, пока не будет достигнут заданный маршрут. Это фактически закроет все промежуточные страницы и вернет вас на нужную страницу.
import 'package:flutter/material.dart';
// Inside your widget
Navigator.popUntil(context, ModalRoute.withName('/desired_route'));
Метод 3: использование виджета с отслеживанием состояния и Navigator.of()
Другой подход — использование виджета с отслеживанием состояния и метода Navigator.of(). Получив доступ к NavigatorState, вы можете вызвать метод pop(), чтобы закрыть текущую страницу.
import 'package:flutter/material.dart';
class MyPage extends StatefulWidget {
@override
_MyPageState createState() => _MyPageState();
}
class _MyPageState extends State<MyPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My Page'),
),
body: Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text('Close Page'),
),
),
);
}
}
Метод 4. Использование виджета WillPopScope
Виджет WillPopScopeпозволяет перехватывать нажатие кнопки «Назад» на Android или жест навигации на iOS. Возвращая trueв обратном вызове onWillPop, вы можете закрыть текущую страницу.
import 'package:flutter/material.dart';
class MyPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
Navigator.of(context).pop();
return true;
},
child: Scaffold(
appBar: AppBar(
title: Text('My Page'),
),
body: Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text('Close Page'),
),
),
),
);
}
}
В этой статье мы рассмотрели несколько способов закрытия текущей страницы во Flutter. Предпочитаете ли вы использовать метод Navigator.pop(), навигацию по именованным маршрутам, доступ к NavigatorStateили использование виджета WillPopScope, у вас есть ряд возможностей. выбирать из. Выберите метод, который лучше всего соответствует требованиям навигации вашего приложения, и наслаждайтесь разработкой удобных для пользователя приложений Flutter.