美文网首页
Flutter Error: Navigator operati

Flutter Error: Navigator operati

作者: 高思阳 | 来源:发表于2020-07-01 16:00 被阅读0次

在一个界面中(widget)试图通过按钮的点击(onTap 或者onPress)进入另外一个widget(界面)

代码如下

image.png

运行app 就会出现如标题一样的错误

二 、原因解析

通过debug 在Navigator.of(context)处打断点,进入Navigator.dart里 直接上图


image.png

再深入一层

在这里可以看到,有一个while循环一直向上获取_parent

image.png

如上 ancestor已经为root,再获取_parent 为null,因此在Navigator.dart的of方法里 直接抛出error

三 、解决方案
通过原因解析,可知是context的原因 context不能为用户构建widget最根部的context(在demo中 即MyHello)

因此调整代码如下

image.png

如上 新创建了widget Home作为body 在build Home的过程中 按钮的点击 Navigator.of(context) 此处的context为Home,在framework.dart ancestorStateOfType方法中的 while循环中 会有一级它的_parent.state 为NavigatorState

四、 总结

The context used to push or pop routes from the Navigator must be that of a

widget that is a descendant of a Navigator widget.

相关文章

网友评论

      本文标题:Flutter Error: Navigator operati

      本文链接:https://www.haomeiwen.com/subject/yqqhqktx.html