解决方式:
在调用notifyListeners()时加个判断:
if (this.hasListeners) {
notifyListeners()
}
原因:此ChangeNotifier旧对象已调用dispose()销毁了,此时使用旧对象调用notifyListeners()会报此错误
对hasListeners说明:
///当前是否有侦听器已注册。
///
///客户的行为不应依赖于此值,因为
///当另一个监听器碰巧启动或停止时,一个监听器的逻辑发生变化
///监听将导致极其难以追踪的错误。子类可能使用
///该信息用于确定在没有
///然而,听众;例如,当侦听器处于
///添加并在删除侦听器时暂停它。
///
///通常,这是通过重写[addListener]来使用的,检查
///[hasListeners]在调用“super.addListener()”之前为false,如果是,
///开始任何需要的工作,以确定何时打电话
///[通知听众];类似地,通过重写[RemoteListener],检查
///如果在调用“super.removeListener()”后[hasListeners]为false,并且如果
///所以,停止同样的工作。
///
///如果已调用[dispose],则此方法返回false。