diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md index 63074b81e48..e708df3f64b 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.8.0 + +* Adds support to track scroll position changes. See `PlatformWebViewController.setOnScrollPositionChange`. + ## 2.7.0 * Adds support for handling HTTP basic authentication requests. See `PlatformNavigationDelegate.setOnHttpAuthRequest`. diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart index d81cdaf2351..a6cc2c03f3a 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart @@ -286,6 +286,14 @@ abstract class PlatformWebViewController extends PlatformInterface { 'setOnConsoleMessage is not implemented on the current platform', ); } + + /// Sets the listener for content offset changes. + Future setOnScrollPositionChange( + void Function(ScrollPositionChange scrollPositionChange)? + onScrollPositionChange) { + throw UnimplementedError( + 'setOnScrollPositionChange is not implemented on the current platform'); + } } /// Describes the parameters necessary for registering a JavaScript channel. diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/scroll_position_change.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/scroll_position_change.dart new file mode 100644 index 00000000000..dab68d49188 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/scroll_position_change.dart @@ -0,0 +1,17 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/// Defines the parameters of the scroll position change callback. +class ScrollPositionChange { + /// Creates a [ScrollPositionChange]. + const ScrollPositionChange(this.x, this.y); + + /// The value of the horizontal offset with the origin being at the leftmost + /// of the `WebView`. + final double x; + + /// The value of the vertical offset with the origin being at the topmost of + /// the `WebView`. + final double y; +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart index d1a074f7925..84b20f3257e 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart @@ -16,6 +16,7 @@ export 'platform_webview_controller_creation_params.dart'; export 'platform_webview_cookie_manager_creation_params.dart'; export 'platform_webview_permission_request.dart'; export 'platform_webview_widget_creation_params.dart'; +export 'scroll_position_change.dart'; export 'url_change.dart'; export 'web_resource_error.dart'; export 'webview_cookie.dart'; diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml index 1508743dd41..e3292784556 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml @@ -4,7 +4,7 @@ repository: https://github.com/flutter/packages/tree/main/packages/webview_flutt issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview_flutter%22 # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 2.7.0 +version: 2.8.0 environment: sdk: ">=3.0.0 <4.0.0"