diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java index d5ffa971c5f..abbedeb4ddd 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterActivity.java @@ -701,10 +701,10 @@ public class FlutterActivity extends Activity : null; @Override - public void setFrameworkHandlesBack(boolean frameworkHandlesBacks) { - if (frameworkHandlesBacks && !hasRegisteredBackCallback) { + public void setFrameworkHandlesBack(boolean frameworkHandlesBack) { + if (frameworkHandlesBack && !hasRegisteredBackCallback) { registerOnBackInvokedCallback(); - } else if (!frameworkHandlesBacks && hasRegisteredBackCallback) { + } else if (!frameworkHandlesBack && hasRegisteredBackCallback) { unregisterOnBackInvokedCallback(); } } diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java index ad1de8c698f..85ce3ade38f 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterFragment.java @@ -1689,11 +1689,6 @@ public class FlutterFragment extends Fragment return getArguments().getBoolean(ARG_SHOULD_DELAY_FIRST_ANDROID_VIEW_DRAW); } - @Override - public void setFrameworkHandlesBack(boolean frameworkHandlesBacks) { - // Irrelevant to FlutterFragment. - } - private boolean stillAttachedForEvent(String event) { if (delegate == null) { Log.w(TAG, "FlutterFragment " + hashCode() + " " + event + " called after release."); diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/systemchannels/PlatformChannel.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/systemchannels/PlatformChannel.java index 2c0a3bf378a..06244b5b32f 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/systemchannels/PlatformChannel.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/systemchannels/PlatformChannel.java @@ -138,8 +138,8 @@ public class PlatformChannel { break; case "SystemNavigator.setFrameworkHandlesBack": { - boolean frameworkHandlesBacks = (boolean) arguments; - platformMessageHandler.setFrameworkHandlesBack(frameworkHandlesBacks); + boolean frameworkHandlesBack = (boolean) arguments; + platformMessageHandler.setFrameworkHandlesBack(frameworkHandlesBack); result.success(null); break; } @@ -516,8 +516,14 @@ public class PlatformChannel { */ void setSystemUiOverlayStyle(@NonNull SystemChromeStyle systemUiOverlayStyle); - /** The Flutter application would or would not like to handle navigation pop events itself. */ - void setFrameworkHandlesBack(boolean frameworkHandlesBack); + /** + * The Flutter application would or would not like to handle navigation pop events itself. + * + *

Relevant for registering and unregistering the app's OnBackInvokedCallback for the + * Predictive Back feature, for example as in {@link + * io.flutter.embedding.android.FlutterActivity}. + */ + default void setFrameworkHandlesBack(boolean frameworkHandlesBack) {} /** * The Flutter application would like to pop the top item off of the Android app's navigation diff --git a/engine/src/flutter/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/engine/src/flutter/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 129e3318461..41ffa23853c 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -57,7 +57,14 @@ public class PlatformPlugin { */ boolean popSystemNavigator(); - void setFrameworkHandlesBack(boolean frameworkHandlesBacks); + /** + * The Flutter application would or would not like to handle navigation pop events itself. + * + *

Relevant for registering and unregistering the app's OnBackInvokedCallback for the + * Predictive Back feature, for example as in {@link + * io.flutter.embedding.android.FlutterActivity}. + */ + default void setFrameworkHandlesBack(boolean frameworkHandlesBack) {} } @VisibleForTesting @@ -112,8 +119,8 @@ public class PlatformPlugin { } @Override - public void setFrameworkHandlesBack(boolean frameworkHandlesBacks) { - PlatformPlugin.this.setFrameworkHandlesBack(frameworkHandlesBacks); + public void setFrameworkHandlesBack(boolean frameworkHandlesBack) { + PlatformPlugin.this.setFrameworkHandlesBack(frameworkHandlesBack); } @Override @@ -482,8 +489,8 @@ public class PlatformPlugin { currentTheme = systemChromeStyle; } - private void setFrameworkHandlesBack(boolean frameworkHandlesBacks) { - platformPluginDelegate.setFrameworkHandlesBack(frameworkHandlesBacks); + private void setFrameworkHandlesBack(boolean frameworkHandlesBack) { + platformPluginDelegate.setFrameworkHandlesBack(frameworkHandlesBack); } private void popSystemNavigator() { diff --git a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterAndroidComponentTest.java b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterAndroidComponentTest.java index b7f9d9060dc..137ab26d422 100644 --- a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterAndroidComponentTest.java +++ b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterAndroidComponentTest.java @@ -419,6 +419,6 @@ public class FlutterAndroidComponentTest { } @Override - public void setFrameworkHandlesBack(boolean frameworkHandlesBacks) {} + public void setFrameworkHandlesBack(boolean frameworkHandlesBack) {} } }