| // 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<UIOpenURLContext> |
| ) { |
| 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() |
| } |
| } |
| } |