Skip to content

Commit ab246c2

Browse files
bparrishMinesFMorschel
authored andcommitted
[webview_flutter_platform_interface] Adds method to set overscroll mode (flutter#9099)
Platform interface portion of flutter/flutter#57090 ## Pre-Review Checklist [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
1 parent 97c86a5 commit ab246c2

6 files changed

Lines changed: 40 additions & 2 deletions

File tree

packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
## NEXT
1+
## 2.11.0
22

3+
* Adds support to set the over-scroll mode for the WebView. See `PlatformWebViewController.setOverScrollMode`.
34
* Updates minimum supported SDK version to Flutter 3.22/Dart 3.4.
45

56
## 2.10.0

packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,13 @@ abstract class PlatformWebViewController extends PlatformInterface {
324324
'setOnJavaScriptTextInputDialog is not implemented on the current platform',
325325
);
326326
}
327+
328+
/// Sets the over-scroll mode for the WebView.
329+
Future<void> setOverScrollMode(WebViewOverScrollMode mode) async {
330+
throw UnimplementedError(
331+
'setOverScrollMode is not implemented on the current platform',
332+
);
333+
}
327334
}
328335

329336
/// Describes the parameters necessary for registering a JavaScript channel.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
/// Defines the over-scroll behavior of a WebView.
6+
enum WebViewOverScrollMode {
7+
/// Always allow a user to over-scroll the WebView.
8+
always,
9+
10+
/// Allow a user to over-scroll the WebView only if the content is larger than
11+
/// the viewport.
12+
ifContentScrolls,
13+
14+
/// Never allow a user to over-scroll the WebView.
15+
never,
16+
}

packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export 'javascript_mode.dart';
1212
export 'load_request_params.dart';
1313
export 'navigation_decision.dart';
1414
export 'navigation_request.dart';
15+
export 'over_scroll_mode.dart';
1516
export 'platform_navigation_delegate_creation_params.dart';
1617
export 'platform_webview_controller_creation_params.dart';
1718
export 'platform_webview_cookie_manager_creation_params.dart';

packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ repository: https://github.com/flutter/packages/tree/main/packages/webview_flutt
44
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview_flutter%22
55
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
66
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
7-
version: 2.10.0
7+
version: 2.11.0
88

99
environment:
1010
sdk: ^3.4.0

packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,19 @@ void main() {
457457
throwsUnimplementedError,
458458
);
459459
});
460+
461+
test(
462+
'Default implementation of setOverScrollMode should throw unimplemented error',
463+
() {
464+
final PlatformWebViewController controller =
465+
ExtendsPlatformWebViewController(
466+
const PlatformWebViewControllerCreationParams());
467+
468+
expect(
469+
() => controller.setOverScrollMode(WebViewOverScrollMode.always),
470+
throwsUnimplementedError,
471+
);
472+
});
460473
}
461474

462475
class MockWebViewPlatformWithMixin extends MockWebViewPlatform

0 commit comments

Comments
 (0)