Flutter中如何将WillPopScope转换为带返回数据的PopScope
将废弃的WillPopScope转换为PopScope
转换后的代码实现
PopScope( canPop: true, onPopInvoked: (bool didPop) { if (!didPop) { Navigator.of(context).pop("flag"); } }, child: // 此处填入原WillPopScope包裹的子组件 )
核心逻辑说明
canPop属性直接对应原WillPopScope中onWillPop的返回值,用于控制是否允许系统默认的页面返回行为。onPopInvoked是返回动作触发时的回调:- 参数
didPop为true时,说明系统已经自动完成了返回操作; - 为
false时,需要手动处理返回逻辑,这正是原代码中主动调用Navigator.pop传递参数的场景。
- 参数
- 原代码里手动执行
Navigator.pop的逻辑必须放在!didPop的分支中,避免重复触发返回操作。
内容的提问来源于stack exchange,提问作者Muhammad Majid
相关产品推荐
相关产品推荐

