项目中发现重写WillPopScope就会导致iOS无法手势回退。
在flutter的issue中发现有解决方案。https://github.com/flutter/flutter/issues/14203
解决思路是在iOS上监听滑动,并执行退出callback。
class MyWillPopScope extends StatelessWidget {
const MyWillPopScope({
required this.child,
this.onWillPop,
super.key,
});
final Widget child;
final WillPopCallback? onWillPop;
@override
Widget build(BuildContext context) {
return Platform.isIOS
? GestureDetector(
onHorizontalDragUpdate: (details) {
if (details.delta.dx > 0 && onWillPop != null) {
onWillPop!.call();
}
},
child: WillPopScope(
onWillPop: onWillPop,
child: child,
),
)
: WillPopScope(
onWillPop: onWillPop,
child: child,
);
}
}
网友评论