Я использую модуль flutter, чтобы добавить несколько экранов в свое родное приложение для iOS. то же самое используется и на стороне Android. Теперь я хочу добавить в приложение вкус dev, prod. Мне удалось сделать это в модуле флаттера, и я также могу запустить его с помощью терминала.
flutter run --flavor dev/prod
это работает так, как ожидалось. Но теперь я хочу запустить это из моего родного приложения. Я создал те же схемы на стороне iOS, но он всегда запускает последний сгенерированный вариант модуля флаттера, а не тот, который я пытаюсь запустить.
Я уже читал этот выпуск git. У него нет решения, и последний коммит просто говорит: «Да, вы можете это сделать, но не знаете, как».
В итоге я использовал прагму vm:entry-point для управления точкой входа модуля флаттера и назначения необходимого значения для построения контекста. Доступ к ним можно получить через приложение, когда это необходимо.
@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)
Прочтите это руководство по настройке вкусов. Developer.android.com/build/build-variants#product-flavors