import 'package:flutter/material.dart';

/// 禁用 iOS 左滑返回手势的 [MaterialPage]。
///
/// 用于有未保存数据的表单页面（create / edit），强制用户通过
/// NavBar 返回按钮触发 [PopScope] + [pageBackProvider] 退出检测逻辑。
///
/// iOS 左滑手势走 [Navigator.finalizeRoute] 代码路径，不经过
/// [Navigator.maybePop]，因此 [PopScope] 无法拦截。
/// 通过覆盖 [MaterialPageRoute.popGestureEnabled] 返回 `false`
/// 彻底禁用 iOS 左滑。
class NoSwipeBackPage<T> extends MaterialPage<T> {
  const NoSwipeBackPage({
    required super.child,
    required super.key,
    required super.name,
    super.arguments,
    super.canPop,
  });

  @override
  Route<T> createRoute(BuildContext context) {
    return _NoSwipeBackPageRoute<T>(this);
  }
}

class _NoSwipeBackPageRoute<T> extends MaterialPageRoute<T> {
  _NoSwipeBackPageRoute(NoSwipeBackPage<T> page)
    : super(builder: (_) => page.child, settings: page);

  @override
  bool get popGestureEnabled => false;
}
