部分手机上在调用 Navigator.of(context).pop();
的时候遇到不能返回的情况,控制台报错,打开错误位置发现是 assert(!_debugLocked);
导致的。
关于这个变量
bool _debugLocked = false; // used to prevent re-entrant calls to push, pop, and friends
// 用于防止push、pop和friends的重复调用
由于我们在这里使用了 pop 所以应该是返回被重复调用的bug
解决办法1:
Future.delayed(Duration.zero, () {
Navigator. ...
});
解决办法2:
SchedulerBinding.instance.addPostFrameCallback((_) {
Navigator. ...
});
参考
https://stackoverflow.com/questions/55618717/error-thrown-on-navigator-pop-until-debuglocked-is-not-true