flutter有时需要检测手势返回上一页,需要手动写方法,针对ios和安卓的不同行为
主要代码:
canPop: false,
onPopInvokedWithResult: (didPop) {
printInfo(info: 'didPop: $didPop');
if(!didopo){
// 处理逻辑
}
},
GestureDetector(
// 确保手势检测器覆盖整个区域
behavior: HitTestBehavior.opaque, // 关键属性:确保即使透明区域也能检测手势
onHorizontalDragEnd: (details) {
if (details.primaryVelocity != null &&
details.primaryVelocity! > 300) {
}
},
)
使用PopScope,canPop为false
(执行路由后退之后都会触发onPopInvokedWithResult,值为true)
iPhone13,版本18.0.1 iPhone15 Pro max
| onPopInvokedWithResult | GestureDetector |
|---|---|
| 不会触发拦截 | 会触发检测 |
| – | – |
安卓手机,oppo Reno11 ColorOS 15.0
| onPopInvokedWithResult | GestureDetector |
|---|---|
| 从手机最左侧滑动,会触发,为false | 不会触发检测 |
| 从手机中间滑动,不会触发 | 会触发检测 |
2274

被折叠的 条评论
为什么被折叠?



