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
相关产品推荐
相关产品推荐

