androidflutterflutter-appbarflutter-platform-channel

Finish FlutterActivity from Flutter when integrating Flutter to native host app [Add2App]


When integrating Flutter to a host app (docs) there is a few ways to do it, one of them (simplest) is open Flutter in a new Activity via FlutterActivity class. Like this:

// Java
hostActivity.startActivity(                
  FlutterActivity.withCachedEngine("my_engine_id").build(context)
);

Traditionally for Android style windows on Flutter side we create AppBar with Back button.

This AppBar back button and Android system back button must behave the same: foreground activity must been closed (finish) when pressing to back button.

Currently system back button really closes the FlutterActivity, but how to emulate this behaviour from flutters AppBar back button?

// Dart - Flutter side
...
child: AppBar(
  leading: IconButton(
      icon: Icon(Icons.arrow_back),
      onPressed: () {
          // WHAT MUST BE HERE?
      }),
...

PS Platform channel between Flutter side and host established - I can call any code from any side


Solution

  • Solution found:

    SystemChannels.platform.invokeMethod<void>('SystemNavigator.pop');
    

    Removes the topmost Flutter instance, presenting what was before it.

    On Android, removes this activity from the stack and returns to the previous activity.

    Documentation here: api reference