flutter - 当用户返回主屏幕时关闭侧抽屉(颤振)
问题描述
在我创建的侧抽屉中,当用户单击任何链接时,用户会转到该屏幕并且抽屉也会关闭,这没有问题,同样当用户打开侧抽屉并按返回键时,抽屉关闭,这也有效。
但是,假设用户单击“我的个人资料”链接(或任何链接),然后如果用户从个人资料屏幕按返回键返回主屏幕(或在应用栏中使用返回键),用户会发现在主页上打开侧抽屉屏幕。然后,任何一个用户都必须按返回键或点击屏幕上的任意位置来关闭抽屉。
最初,我的抽屉甚至没有在后按时关闭,我发现了这篇文章 [https://stackoverflow.com/q/60314156] 并实施了 WillPopScope() [实际上这帮助我在后按时关闭抽屉],但是问题我已经解释过,WillPopScope 仍未解决。
请让我知道我必须做哪些更改才能实现此行为。
这就是我创建文件的方式: HomePage 具有 BottomNavigationDrawer,用户通过它进入购物页面(实际上标记为“主页”),这是用户看到侧抽屉的页面。因此,在上面解释我所说的主页时,我的意思是用户导航到个人资料页面的购物页面。
class ShoppingPage extends StatefulWidget {
@override
_ShoppingPageState createState() => _ShoppingPageState();
}
class _ShoppingPageState extends State<ShoppingPage> {
GlobalKey<ScaffoldState> _key = new GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
ThemeData getTheme = Theme.of(context);
return WillPopScope(
onWillPop: () async {
if (_key.currentState.isDrawerOpen) {
Navigator.of(context).pop();
return false;
}
return true;
},
child: Scaffold(
key: _key,
appBar: AppBar(
title: ,
elevation: 0,
),
drawer: CustomDrawer(),
body: SafeArea(
child: Container(
解决方案
您只需致电:-
Navigator.pop(context);
在从抽屉导航到另一个屏幕之前。就像当用户点击您的个人资料然后在 onTap 方法中首先弹出它然后导航一样。
onTap:(){
Navigator.pop(context);
//then write navigation statement over here
}
推荐阅读
- selenium - 为什么最后一个空行已被拉出作为 selenium apache POI 中具有空值的附加测试
- php - Laravel 预订表未邮寄
- reactjs - 在反应中,将响应数组插入 setState
- php - Laravel 使用 MDaemon 电子邮件服务器发送电子邮件但收到错误“需要身份验证”
- c# - 更新用户在获取结果中创建的更改需要多少时间邮件工具包?
- python - Discord.py change_nickname 错误参数太多
- cordova - 如何从 inappbrowser 的 executeScript 方法内部调用方法
- bash - 停止 bash 尝试显示所有可能的结果并在找到不明确的结果时自动完成
- python - 如何将 Angular 6 单页应用程序与 FLASK 架构集成?
- sql - 是否可以使用存储过程创建和调度 Sql server 作业?