繁体   English   中英

颤动中的导航器错误(抽屉按钮注销)

[英]Navigator error in flutter (Drawer button logout)

我有一个抽屉,我像这样在我所有的 StatefulWidget 中共享

@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
drawer: SharedDrawer()
... //More code

在抽屉中,我放置了一个注销按钮,将用户重定向到登录页面,像这样清理所有路由器堆栈。

Navigator.of(context).pop();
Navigator.of(context).pushNamedAndRemoveUntil('/', (Route<dynamic> route) => false);

但是当我尝试再次登录该应用程序时出现此错误。

flutter:查找停用的小部件的祖先是不安全的。 此时小部件的元素树的状态不再稳定。 要在其 dispose() 方法中安全地引用小部件的祖先,请通过在小部件的 didChangeDependencies() 方法中调用 inheritFromWidgetOfExactType() 来保存对祖先的引用。

我做错了什么?

我如何管理应用程序中的登录/退出或导航器堆栈的内容?

问候!

如果您在类中添加了MaterialApp ,请将其删除并将其放入runApp中,例如

runApp( new MaterialApp( home: new MyApp() ));

错误“查找停用的小部件的祖先是不安全的”通常是由于重复使用先前已处理的小部件的引用引起的,即在Navigator.of(context).pop();期间Navigator.of(context).pop();

解决此问题的一种方法是跟踪您在小部件上使用的上下文,这样它就不会重用先前已处理的上下文。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM