问题比较简单,但是一开始方向走错了,以为时 Provider 重 build 导致的返回值丢失,导致问题点找了很久。
Button onPressed 后返回上个页面,上个页面 await 路由返回值,但是一直得到的是 null。
问题代码大致如下:
...
isSavedSuccess = await _reqAndSaveInfo(model, avatar, nickname, gender);
Navigator.of(context).pop(isSavedSuccess);
} finally {
loading.dismiss();
}
} // onPressed 方法结束
...
loading 是一个 showDialog 的弹出框,其中 dismiss 内部只是单纯的调用了 Navigator.of(_context).pop();。
问题找到了看着是很明显的,先 pop 要返回的值,接下来 finally 块执行,loading.dismiss() 内部的 pop 返回值覆盖了原本要 pop 的值。