Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 3b560aa

Browse files
authored
Predictive back breakage fix (#42789)
Fixes breakages related to setFrameworkHandlesBack, for the Predictive Back feature for Android.
1 parent f67ed35 commit 3b560aa

File tree

5 files changed

+26
-18
lines changed

5 files changed

+26
-18
lines changed

shell/platform/android/io/flutter/embedding/android/FlutterActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -701,10 +701,10 @@ public void onBackInvoked() {
701701
: null;
702702

703703
@Override
704-
public void setFrameworkHandlesBack(boolean frameworkHandlesBacks) {
705-
if (frameworkHandlesBacks && !hasRegisteredBackCallback) {
704+
public void setFrameworkHandlesBack(boolean frameworkHandlesBack) {
705+
if (frameworkHandlesBack && !hasRegisteredBackCallback) {
706706
registerOnBackInvokedCallback();
707-
} else if (!frameworkHandlesBacks && hasRegisteredBackCallback) {
707+
} else if (!frameworkHandlesBack && hasRegisteredBackCallback) {
708708
unregisterOnBackInvokedCallback();
709709
}
710710
}

shell/platform/android/io/flutter/embedding/android/FlutterFragment.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,11 +1689,6 @@ boolean shouldDelayFirstAndroidViewDraw() {
16891689
return getArguments().getBoolean(ARG_SHOULD_DELAY_FIRST_ANDROID_VIEW_DRAW);
16901690
}
16911691

1692-
@Override
1693-
public void setFrameworkHandlesBack(boolean frameworkHandlesBacks) {
1694-
// Irrelevant to FlutterFragment.
1695-
}
1696-
16971692
private boolean stillAttachedForEvent(String event) {
16981693
if (delegate == null) {
16991694
Log.w(TAG, "FlutterFragment " + hashCode() + " " + event + " called after release.");

shell/platform/android/io/flutter/embedding/engine/systemchannels/PlatformChannel.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result
138138
break;
139139
case "SystemNavigator.setFrameworkHandlesBack":
140140
{
141-
boolean frameworkHandlesBacks = (boolean) arguments;
142-
platformMessageHandler.setFrameworkHandlesBack(frameworkHandlesBacks);
141+
boolean frameworkHandlesBack = (boolean) arguments;
142+
platformMessageHandler.setFrameworkHandlesBack(frameworkHandlesBack);
143143
result.success(null);
144144
break;
145145
}
@@ -516,8 +516,14 @@ public interface PlatformMessageHandler {
516516
*/
517517
void setSystemUiOverlayStyle(@NonNull SystemChromeStyle systemUiOverlayStyle);
518518

519-
/** The Flutter application would or would not like to handle navigation pop events itself. */
520-
void setFrameworkHandlesBack(boolean frameworkHandlesBack);
519+
/**
520+
* The Flutter application would or would not like to handle navigation pop events itself.
521+
*
522+
* <p>Relevant for registering and unregistering the app's OnBackInvokedCallback for the
523+
* Predictive Back feature, for example as in {@link
524+
* io.flutter.embedding.android.FlutterActivity}.
525+
*/
526+
default void setFrameworkHandlesBack(boolean frameworkHandlesBack) {}
521527

522528
/**
523529
* The Flutter application would like to pop the top item off of the Android app's navigation

shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,14 @@ public interface PlatformPluginDelegate {
5757
*/
5858
boolean popSystemNavigator();
5959

60-
void setFrameworkHandlesBack(boolean frameworkHandlesBacks);
60+
/**
61+
* The Flutter application would or would not like to handle navigation pop events itself.
62+
*
63+
* <p>Relevant for registering and unregistering the app's OnBackInvokedCallback for the
64+
* Predictive Back feature, for example as in {@link
65+
* io.flutter.embedding.android.FlutterActivity}.
66+
*/
67+
default void setFrameworkHandlesBack(boolean frameworkHandlesBack) {}
6168
}
6269

6370
@VisibleForTesting
@@ -112,8 +119,8 @@ public void setSystemUiOverlayStyle(
112119
}
113120

114121
@Override
115-
public void setFrameworkHandlesBack(boolean frameworkHandlesBacks) {
116-
PlatformPlugin.this.setFrameworkHandlesBack(frameworkHandlesBacks);
122+
public void setFrameworkHandlesBack(boolean frameworkHandlesBack) {
123+
PlatformPlugin.this.setFrameworkHandlesBack(frameworkHandlesBack);
117124
}
118125

119126
@Override
@@ -482,8 +489,8 @@ private void setSystemChromeSystemUIOverlayStyle(
482489
currentTheme = systemChromeStyle;
483490
}
484491

485-
private void setFrameworkHandlesBack(boolean frameworkHandlesBacks) {
486-
platformPluginDelegate.setFrameworkHandlesBack(frameworkHandlesBacks);
492+
private void setFrameworkHandlesBack(boolean frameworkHandlesBack) {
493+
platformPluginDelegate.setFrameworkHandlesBack(frameworkHandlesBack);
487494
}
488495

489496
private void popSystemNavigator() {

shell/platform/android/test/io/flutter/embedding/android/FlutterAndroidComponentTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,6 @@ public boolean popSystemNavigator() {
419419
}
420420

421421
@Override
422-
public void setFrameworkHandlesBack(boolean frameworkHandlesBacks) {}
422+
public void setFrameworkHandlesBack(boolean frameworkHandlesBack) {}
423423
}
424424
}

0 commit comments

Comments
 (0)