How to start a FlutterActivity and change route

Skosh :

Im trying to make an alarm clock using flutter, and start the flutter activity with a path to the alarm ("/alarm" path). I have acccomplished starting the MainActivity using MethodChannels, but i need to somehow route to "/alarm", but calling getFlutterView().pushRoute("/alarm") does not do anything. The activity just starts in the main view instead of alarm route.

Thanks in advance!

I have managed to startActivity using MethodChannels, but when calling getFlutterView().pushRoute("/alarm") in onCreate, it does not change the route.

@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    GeneratedPluginRegistrant.registerWith(this);

    // This does not change the route (setInitialRoute doesn't work either)
    getFlutterView().pushRoute("/alarm");

    new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
      new MethodCallHandler() {
        @Override
        public void onMethodCall(MethodCall call, Result result) {
          if (call.method.equals("setAlarm")) {
             // pushRoute works here, but not in onCreate
             getFlutterView().pushRoute("/alarm");
          } else {
            result.notImplemented();
          }
        }
      }
    );
  }

Expected results: Change the route to "/alarm"

Actual results: Nothing happens, the activity gets opened on initial route eg. the main page

Skosh :

Found the solution,

pushRoute() or setInitialRoute() doesn't work until the View has been inflated.

Here is the code that works:

FlutterView.FirstFrameListener mListener = new FlutterView.FirstFrameListener() {
      @Override
      public void onFirstFrame() {
        getFlutterView().pushRoute("/alarm");
      }
    };

    getFlutterView().addFirstFrameListener(mListener);

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=158377&siteId=1