You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter iOS项目添加SceneDelegate后启动出现黑屏问题排查求助

Flutter iOS项目添加SceneDelegate后启动出现黑屏问题排查求助

大家好,最近我给我的Flutter iOS项目添加SceneDelegate后,遇到了启动黑屏的问题,想请教下有没有人遇到过类似情况或者能帮我排查下哪里出错了?

我是通过新建SceneDelegate.swift文件来添加的,代码如下:

import Flutter

@available(iOS 13.0, *)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?

    func scene(
        _ scene: UIScene,
        willConnectTo session: UISceneSession,
        options connectionOptions: UIScene.ConnectionOptions
    ) {

        guard let windowScene = scene as? UIWindowScene else {
            return
        }

        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
            preconditionFailure("unable to obtain AppDelegate")
        }

        let window = UIWindow(windowScene: windowScene)
        let flutterEngine = FlutterEngine(name: "FlutterEngine")
        flutterEngine.run()
        GeneratedPluginRegistrant.register(with: flutterEngine)

        let viewController = FlutterViewController(
            engine: flutterEngine,
            nibName: nil,
            bundle: nil
        )

        window.rootViewController = viewController
        window.makeKeyAndVisible()
        self.window = window
    }
}

我的AppDelegate代码是这样的:

import Flutter
import UIKit

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {

    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        guard #available(iOS 13, *) else{
            let flutterEngine = FlutterEngine(name: "FlutterEngine")
            flutterEngine.run()
            GeneratedPluginRegistrant.register(with: flutterEngine)
            return super.application(application, didFinishLaunchingWithOptions: launchOptions)
        }
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
}

Info.plist里的相关配置如下:

...
<key>UIApplicationSceneManifest</key>
<dict>
    <key>UIApplicationSupportsMultipleScenes</key>
    <true/>
    <key>UISceneConfigurations</key>
    <dict>
        <key>UIWindowSceneSessionRoleApplication</key>
        <array>
            <dict>
                <key>UISceneDelegateClassName</key>
                <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
            </dict>
        </array>
    </dict>
</dict>
...

补充几个细节:

  • 我的项目只支持iOS14及以上版本
  • 我给SceneDelegate的代码加了日志,确认代码是执行了的,但屏幕还是黑屏
  • 我在全新的Flutter项目里做了同样的操作,完全没问题,所以这个问题应该是和我当前项目的配置有关

想问问大家,我是不是漏了什么添加SceneDelegate必须的步骤?或者有没有其他可能导致这个黑屏的原因?

备注:内容来源于stack exchange,提问作者Sikandar Zafar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:28:13