【问题标题】:Undefined symbol: _FlutterDefaultDartEntrypoint - Adding a Flutter screen to an iOS app and using initialRoute未定义的符号:_FlutterDefaultDartEntrypoint - 将 Flutter 屏幕添加到 iOS 应用程序并使用 initialRoute
【发布时间】:2023-02-03 02:37:41
【问题描述】:
Adding a Flutter screen to an iOS app官方文档建议从Flutter 1.22版本开始,可以在构造FlutterViewController时为Flutter设置一个初始路由:
let flutterEngine = FlutterEngine()
// FlutterDefaultDartEntrypoint is the same as nil, which will run main().
engine.run(
withEntrypoint: FlutterDefaultDartEntrypoint, initialRoute: "/onboarding")
但是按照这些说明进行操作时,构建会失败并出现错误:
Undefined symbol: _FlutterDefaultDartEntrypoint
【问题讨论】:
标签:
swift
flutter
flutter-add-to-app
【解决方案1】:
正如上面代码示例中的注释所暗示的那样,“FlutterDefaultDartEntrypoint 与 nil 相同,它将运行 main”.
所以用 nil 替换 FlutterDefaultDartEntrypoint 解决了这个问题:
let flutterEngine = FlutterEngine()
engine.run(withEntrypoint: nil, initialRoute: "/onboarding")
要运行除默认 main() 方法以外的任何方法,可以使用以下方法:
let flutterEngine = FlutterEngine()
engine.run(
withEntrypoint: "otherMain",
libraryURI: "other_file.dart",
initialRoute: "/onboarding"
)
这将在 other_file.dart 文件中查找 otherMain() 方法。