最近通过sentry平台,看到了很多奇怪的异常,有些异常甚至达到了百万级别,仔细去看才发现问题所在,报错是这样的:
_CastError
Null check operator used on a null value
change_notifier.dart in ChangeNotifier.notifyListeners at line 218
看到之后根据对应提示找到了代码,发现是notifyListeners报的,也就是说,在notifyListeners的时候,被通知的‘对象’已经被销毁了,这种情况出现的场景比较有限,博主这里出现的场景是倒计时。
那怎么解决这种奇怪的异常呢?最好的办法就是重写notifyListeners方法,然后在重写的notifyListeners中判断所要通知的widget的state的mouted状态是否是true,如果为false,则不执行,具体的操作是这样的: