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 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