// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import Flutter import FlutterPluginRegistrant import SwiftUI @Observable class AppDelegate: FlutterAppDelegate { let flutterEngine = FlutterEngine(name: "my flutter engine") override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication .LaunchOptionsKey: Any]? ) -> Bool { flutterEngine.run() GeneratedPluginRegistrant.register(with: self.flutterEngine) return true } override func application( _ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions ) -> UISceneConfiguration { let configuration = UISceneConfiguration( name: nil, sessionRole: connectingSceneSession.role ) configuration.delegateClass = SceneDelegate.self return configuration } } class SceneDelegate: UIResponder, UIWindowSceneDelegate, FlutterSceneLifeCycleProvider { let sceneLifeCycleDelegate = FlutterPluginSceneLifeCycleDelegate() var window: UIWindow? func scene( _ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions ) { guard (scene as? UIWindowScene) != nil else { return } sceneLifeCycleDelegate.scene( scene, willConnectTo: session, options: connectionOptions ) } func sceneDidDisconnect(_ scene: UIScene) { sceneLifeCycleDelegate.sceneDidDisconnect(scene) } func sceneWillEnterForeground(_ scene: UIScene) { sceneLifeCycleDelegate.sceneWillEnterForeground(scene) } func sceneDidBecomeActive(_ scene: UIScene) { sceneLifeCycleDelegate.sceneDidBecomeActive(scene) } func sceneWillResignActive(_ scene: UIScene) { sceneLifeCycleDelegate.sceneWillResignActive(scene) } func sceneDidEnterBackground(_ scene: UIScene) { sceneLifeCycleDelegate.sceneDidEnterBackground(scene) } func scene( _ scene: UIScene, openURLContexts URLContexts: Set ) { sceneLifeCycleDelegate.scene(scene, openURLContexts: URLContexts) } func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { sceneLifeCycleDelegate.scene(scene, continue: userActivity) } func windowScene( _ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void ) { sceneLifeCycleDelegate.windowScene( windowScene, performActionFor: shortcutItem, completionHandler: completionHandler ) } } @main struct xcode_swiftuiApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { WindowGroup { ContentView() } } }