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

Commit 4262a45

Browse files
committed
Support accessibility back gesture to pop route from view controller
1 parent 20037e3 commit 4262a45

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

shell/platform/darwin/ios/framework/Source/FlutterViewController.mm

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2104,6 +2104,15 @@ - (int32_t)accessibilityFlags {
21042104
return flags;
21052105
}
21062106

2107+
- (BOOL)accessibilityPerformEscape {
2108+
FlutterMethodChannel* navigationChannel = [_engine.get() navigationChannel];
2109+
if (navigationChannel != nil) {
2110+
[self popRoute];
2111+
return YES;
2112+
}
2113+
return NO;
2114+
}
2115+
21072116
+ (BOOL)accessibilityIsOnOffSwitchLabelsEnabled {
21082117
if (@available(iOS 13, *)) {
21092118
return UIAccessibilityIsOnOffSwitchLabelsEnabled();

shell/platform/darwin/ios/framework/Source/FlutterViewControllerTest.mm

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1365,6 +1365,20 @@ - (void)testItReportsAccessibilityOnOffSwitchLabelsFlagSet {
13651365
XCTAssert((flags & (int32_t)flutter::AccessibilityFeatureFlag::kOnOffSwitchLabels) != 0);
13661366
}
13671367

1368+
- (void)testAccessibilityPerformEscapePopsRoute {
1369+
FlutterEnginePartialMock* mockEngine = [[FlutterEnginePartialMock alloc] init];
1370+
id mockNavigationChannel = OCMClassMock([FlutterBasicMessageChannel class]);
1371+
OCMStub([mockEngine navigationChannel]).andReturn(mockNavigationChannel);
1372+
1373+
FlutterViewController* viewController =
1374+
[[FlutterViewController alloc] initWithEngine:self.mockEngine nibName:nil bundle:nil];
1375+
[viewController accessibilityPerformEscape];
1376+
1377+
OCMVerify([mockNavigationChannel invokeMethod:@"popRoute" arguments:nil]);
1378+
1379+
[mockNavigationChannel stopMocking];
1380+
}
1381+
13681382
- (void)testPerformOrientationUpdateForcesOrientationChange {
13691383
[self orientationTestWithOrientationUpdate:UIInterfaceOrientationMaskPortrait
13701384
currentOrientation:UIInterfaceOrientationLandscapeLeft

0 commit comments

Comments
 (0)