Flutter try finally 导致 Navigator pop 路由返回值丢失

问题比较简单,但是一开始方向走错了,以为时 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 的值。

原文地址:https://www.cnblogs.com/seliote/p/14492460.html