如何从原生端启动flutter模块的flavor?

问题描述 投票:0回答:1

我正在使用 flutter 模块在我的本机 iOS 应用程序中添加一些屏幕。 Android 端也使用同样的东西。现在我想向应用程序添加开发、产品风格。我已经设法在 flutter 模块中做到这一点,并且我也可以使用终端启动它

flutter run --flavor dev/prod

这按预期工作。但现在我想从我的本机应用程序触发此操作。我在 iOS 端创建了相同的模式,但它总是启动最后生成的 flutter 模块,而不是我要运行的模块。

我已经阅读了这个git问题。它没有解决方案,最后一次提交只是说“是的,你可以做到”,但没有说如何做到。

android ios flutter flutter-module
1个回答
0
投票

我最终使用 vm:entry-point pragma 来控制 flutter 模块的入口点并为构建上下文分配所需的值。需要时可以通过应用程序访问。

@pragma('vm:entry-point')
Future<void> devMain() async {
   await mainSetup();
   runApp(AppConfig(appEnvironment: AppEnvironment.dev, child: MyApp()));
}

@pragma('vm:entry-point')
Future<void> main() async {
   await mainSetup();
   runApp(AppConfig(appEnvironment: AppEnvironment.prod, child: MyApp()));
}

现在我们可以使用下面的代码从本机应用程序运行这些入口点

let engine = FlutterEngine(name: "com.coforge.my_router")
-> engine.run(withEntrypoint: "devMain")
-> engine.run(withEntrypoint: nil)
© www.soinside.com 2019 - 2024. All rights reserved.