flutter context报错如下:
To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling inheritFromWidgetOfExactType() in the widget's didChangeDependencies() method.
翻译过来是:
要在dispose()方法中安全地引用小部件的祖先,请通过在小部件的didChangeDependencies()方法中调用inheritFromWidgetOfExactType()来保存对祖先的引用。
意思就是context引用的组件已经被销毁,context不可用。
所以最终原因是context引用错误:
我这边出现这个状况是两个原因:
1.在dialog中请求,但是dialog已经销毁,如下图:
如上所示,应该是this.context,这样引用的是界面的context,如果直接引用则是rightOnclick中的context,我这里是dialog的context,当上面的Navigator.pop(context);运行后context就会销毁,则会报如上错误,所以此处应该用this.context。
2.在Http请求框架中注意如下写法:
如上所示,不能用上一个界面的context,不然会报错:
上诉报错都是在如下代码中:
上述会因为图一或图二中的原因报错,引用的mContext不正确。
所以最终结论是context需要引用未销毁的context,不然就会报错。