Flutter 3.16中WillPopScope过期使用PopScope来代替

Flutter 3.16WillPopScope 过期了,需要使用 PopScope 来代替。

针对 PopScopecanPop 参数,官方文档解释如下:

canPopfalse,则执行系统的默认页面回退时会被拦截,并且调用 onPopInvoked 方法,同时 didPopfalse,此时进行逻辑判断,如果需要返回则执行 Navigator.of(context).pop();

注意此时 onPopInvoked 又会被调用,并且 didPoptrue

注意:Flutter 3.22 开始 onPopInvoked 方法过期,需要使用 onPopInvokedWithResult 方法替代,两者逻辑相同,只是增加了一个返回值。

如果不在意返回值 onPopInvoked(bool didPop) 等价于 onPopInvokedWithResult(bool didPop, dynamic result)

参考Demo: github.com

示例代码如下:

修改之前的代码( WillPopScope )如下:

修改之后的代码( PopScope )如下:

注意:Flutter 3.22 开始 onPopInvoked 方法过期,需要使用 onPopInvokedWithResult 方法替代 ,修改后的参考代码如下:

参考链接


发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注