如何在iOS中使用UISceneDelegate初始化FlutterMethodChannel?

移动开发 2026-07-10

我的iOS应用使用FlutterMethodChannel,并且我正在采用这里描述的新UISceneDelegate策略:https://docs.flutter.dev/release/breaking-changes/uiscenedelegate

我正在尝试在 didInitializeImplicitFlutterEngine 中初始化它,并且在这行代码上遇到了崩溃:

let controller : FlutterViewController = window?.rootViewController as! FlutterViewController

网页说这行代码可能在 application:didFinishLaunchingWithOptions: 中导致崩溃,但我没想到会在 didInitializeImplicitFlutterEngine 出现。

网页还提到使用定制的FlutterViewController,但根据该页面的描述,我认为它不适用于我的情况。

如果需要,我愿意提供解决问题所需的任何其他信息。

解决方案

如果其他人也有我同样难以置信的思维堵塞,以下是在 didInitializeImplicitFlutterEngine 中设置FlutterMethodChannel的正确代码:

// Create method channels with `engineBridge.applicationRegistrar.messenger()`
let batteryChannel = FlutterMethodChannel(
  name: "samples.flutter.dev/battery",
  binaryMessenger: engineBridge.applicationRegistrar.messenger()
)

在第2 节里写得很清楚;我只需要复制粘贴他们的代码,并将通道名称改成与我的匹配。

  1. didInitializeImplicitFlutterEngine 中创建方法通道和平台视图(如适用)。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章