    import UIKit
    import Flutter

    @main
    @objc class AppDelegate: FlutterAppDelegate {
      // 动态方向掩码（默认竖屏）
      static var orientationMask: UIInterfaceOrientationMask = .portrait

      override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
      ) -> Bool {

        let controller = window?.rootViewController as! FlutterViewController
        let channel = FlutterMethodChannel(name: "app.orientation",
                                           binaryMessenger: controller.binaryMessenger)

        channel.setMethodCallHandler { [weak self] call, result in
          guard let self = self else { return }

          if call.method == "setOrientation" {
            guard let arg = call.arguments as? String else {
              result(FlutterError(code: "BAD_ARGS", message: "need 'landscape' | 'portrait'", details: nil))
              return
            }

            // 先更新允许的方向掩码
            if arg == "landscape" {
              AppDelegate.orientationMask = .landscape
            } else if arg == "portrait" {
              AppDelegate.orientationMask = .portrait
            } else {
              result(FlutterError(code: "BAD_ARGS", message: "unknown arg", details: nil))
              return
            }

            
            // 再请求实际旋转
            if #available(iOS 16.0, *) {
                // 通知顶层 VC：其 supportedInterfaceOrientations 需要刷新
                self.window?.rootViewController?.setNeedsUpdateOfSupportedInterfaceOrientations()

              if let scene = self.window?.windowScene {
                let orientations: UIInterfaceOrientationMask =
                  (arg == "landscape") ? .landscape : .portrait
                do {
                  try scene.requestGeometryUpdate(.iOS(interfaceOrientations: orientations))
                } catch {
                  result(FlutterError(code: "GEOMETRY_UPDATE_FAILED",
                                      message: error.localizedDescription, details: nil))
                  return
                }
              }
            } else {
              let target: UIInterfaceOrientation =
                (arg == "landscape") ? .landscapeLeft : .portrait
              UIDevice.current.setValue(target.rawValue, forKey: "orientation")
              UIViewController.attemptRotationToDeviceOrientation()
            }

            result(true)
          } else {
            result(FlutterMethodNotImplemented)
          }
        }

        GeneratedPluginRegistrant.register(with: self)
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
      }

      // 关键：把当前的掩码提供给系统
      override func application(_ application: UIApplication,
                                supportedInterfaceOrientationsFor window: UIWindow?)
        -> UIInterfaceOrientationMask {
        return AppDelegate.orientationMask
      }
    }
