最近在做项目的时候遇到一个问题,我的实现是进入一个页面,异步获取数据然后setState更新显示,但是出现了一个情况,每次第一次进去的时候没问题,可以正常显示,但是返回键退出页面再进到这个界面就会chux出现问题,Flutter的资料现在相对还较少,找了很久没发现问题,最后发现是我写单例的时候写错了一个地方
static UdpClient getInstance(NodeInterface nodeInterface) {
if (udpClient == null) {
udpClient = UdpClient();
mNodeInterface = nodeInterface;
}
return udpClient;
}
这样写只在第一次进入的时候会进入if条件,再次进入,由于udpClient设置的是static变量,所以直接返回了udpClient,而nodeInterface还是上次的实例,所以在使用nodeInterface的时候会抛出 This error happens if you call setState() on a State object for a widget that no longer appears in the widget tree错误