最近通过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,则不执行,具体的操作是这样的:
void notifyList
在Flutter开发中,遇到大量'Null check operator used on a null value'异常,主要由已销毁对象调用notifyListeners引起。解决方法是在重写notifyListeners时检查state的mounted状态,确保为true才执行。同样,对于setState,也可通过判断mounted避免类似问题。
订阅专栏 解锁全文
5418

被折叠的 条评论
为什么被折叠?



