Застрял с FlutterViewController.mm (462)] Не удалось запустить двигатель с конфигурацией - PullRequest
0 голосов
/ 23 октября 2018

Я изо всех сил пытаюсь интегрировать библиотеку Particle Device Setup в приложение Flutter.Я последовал примеру Flutter.io, как интегрировать Каналы платформы , чтобы связать приложение Flutter с собственным кодом.Я успешно открыл соединение с родным Particle SDK и могу настроить Photon.Тем не менее, я не могу прогрессировать отсюда.

Мое намерение состоит в том, чтобы перенаправить пользователя на новую страницу при успешном возвращении из фазы установки.Если фаза установки не удалась, пользователь должен иметь возможность начать заново (эта функция еще не реализована).

В классе ParticleSetupState из initState() я звоню initiateParticleSetup();.

Я инициализировал следующие переменные:

static const platform = const MethodChannel("unique_placeholder/particle-setup");
String _particleSetup = "awaiting";
String particleSetup = "placeholder";

initParticleSetup()структурирован следующим образом:

Future<Null> initiateParticleSetup() async {  
            String route = "";
            Map<String, dynamic> arguments = {};
            arguments.putIfAbsent("route", () => route);
            print("route: $route");
            try {
              tempRoute = await platform.invokeMethod("initParticleSetup", arguments);
              // Must be a valid route or a parameter passed back from the result of
              // the setup phase making the application navigate to the next screen 
              // upon successful configuration.
              particleSetup = route;
            } catch (e) {
              particleSetup = "Error: $e"; // Should allow the users to configure the setup again.
            }

            if(!mounted) { return; }
            print("After finishing native code: $route"); // This line is causing the the VERBOSE-2 errors messages
          }

AppDelegate содержит следующий код:

   override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
        ) -> Bool {

        let controller : FlutterViewController = window?.rootViewController as! FlutterViewController;
        let initParticleSetupChannel = FlutterMethodChannel.init(name: "unique_placeholder/particle-setup", binaryMessenger: controller);

        initParticleSetupChannel.setMethodCallHandler({
            (call: FlutterMethodCall, result: FlutterResult) -> Void in                
            if ("initParticleSetup" == call.method) {
                print("Just entered initParticleSetup")
                let argument = call.arguments as? NSDictionary
                var route = argument!["route"] as? String
                print("initial route: \(route)")
                self.initParticleSetup(result: result)
                route = "/proceed"
                print("route is overwritten: \(route)")
                result(route)

                print("leaving initParticleSetup")
            } else {
                result(FlutterMethodNotImplemented);
            }
        });

        GeneratedPluginRegistrant.register(with: self)
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }

    private func initParticleSetup(result: FlutterResult) {
        if let setupController = ParticleSetupMainController(setupOnly: true) {
            print("before self.window? stuff")
            self.window?.rootViewController?.present(setupController, animated: true, completion: nil)
            print("after self.window? stuff")
        }
    }

Когда я закончу фазу настройки и вернусь к коду флаттера, вconsole:

[VERBOSE-2:engine.cc(157)] Could not prepare to run the isolate 
[VERBOSE-2:engine.cc(116)] Engine not prepare and launch isolate.
[VERBOSE-2:FlutterViewController.mm(462)] Could not launch engine with configuration.

Я подозреваю, что это вызвано print () после метода try {} catch {}, так как «После завершения собственного кода: $ route» никогда не выводится на консоль.Я не могу понять, как преодолеть эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...