[webview_flutter_platform_interface] Adds missing build params for WebViewWidget (#6279)
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
index 353e679..12792ac 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
@@ -1,7 +1,8 @@
-## NEXT
+## 1.9.2
* Fixes avoid_redundant_argument_values lint warnings and minor typos.
* Ignores unnecessary import warnings in preparation for [upcoming Flutter changes](https://github.com/flutter/flutter/pull/106316).
+* Adds missing build params for v4 WebViewWidget interface.
## 1.9.1
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_widget.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_widget.dart
index 40334c6..6d73162 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_widget.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/v4/src/platform_webview_widget.dart
@@ -2,8 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+import 'package:flutter/foundation.dart';
+import 'package:flutter/gestures.dart';
import 'package:flutter/widgets.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
+import 'package:webview_flutter_platform_interface/v4/src/platform_webview_controller.dart';
import 'webview_platform.dart';
@@ -33,5 +36,75 @@
/// Builds a new WebView.
///
/// Returns a Widget tree that embeds the created web view.
- Widget build(BuildContext context);
+ Widget build(BuildParams params);
+}
+
+/// Describes the parameters necessary for displaying the platform WebView.
+///
+/// Platform specific implementations can add additional fields by extending
+/// this class.
+///
+/// {@tool sample}
+/// This example demonstrates how to extend the [BuildParams] to provide
+/// additional platform specific parameters.
+///
+/// When extending [BuildParams], additional parameters should always accept
+/// `null` or have a default value to prevent breaking changes.
+///
+/// ```dart
+/// @immutable
+/// class WebKitBuildParams extends BuildParams {
+/// WebKitBuildParams(
+/// super.context, {
+/// required super.controller,
+/// super.layoutDirection,
+/// super.gestureRecognizers,
+/// this.platformSpecificFieldExample,
+/// });
+///
+/// WebKitBuildParams.fromBuildParams(
+/// BuildParams params, {
+/// Object? platformSpecificFieldExample,
+/// }) : this(
+/// params.context,
+/// controller: params.controller,
+/// layoutDirection: params.layoutDirection,
+/// gestureRecognizers: params.gestureRecognizers,
+/// platformSpecificFieldExample: platformSpecificFieldExample,
+/// );
+///
+/// final Object? platformSpecificFieldExample;
+/// }
+/// ```
+/// {@end-tool}
+@immutable
+class BuildParams {
+ /// Constructs a [BuildParams].
+ const BuildParams(
+ this.context, {
+ required this.controller,
+ this.layoutDirection = TextDirection.ltr,
+ this.gestureRecognizers = const <Factory<OneSequenceGestureRecognizer>>{},
+ });
+
+ /// Describes the part of the user interface represented by the returned
+ /// widget.
+ final BuildContext context;
+
+ /// Controls the embedded WebView for the current platform.
+ final PlatformWebViewController controller;
+
+ /// The layout direction to use for the embedded WebView.
+ final TextDirection layoutDirection;
+
+ /// Specifies which gestures should be consumed by the web view.
+ ///
+ /// It is possible for other gesture recognizers to be competing with the web
+ /// view on pointer events, e.g if the web view is inside a [ListView] the
+ /// [ListView] will want to handle vertical drags. The web view will claim
+ /// gestures that are recognized by any of the recognizers on this list.
+ ///
+ /// When this is empty, the web view will only handle pointer events for
+ /// gestures that were not claimed by any other gesture recognizer.
+ final Set<Factory<OneSequenceGestureRecognizer>> gestureRecognizers;
}
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
index 2c1fb09..d0fffe8 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 @@
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: 1.9.1
+version: 1.9.2
environment:
sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_widget_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_widget_test.dart
index ede16c1..ffa7590 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_widget_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/src/v4/platform_webview_widget_test.dart
@@ -82,7 +82,7 @@
: super.implementation(params);
@override
- Widget build(BuildContext context) {
+ Widget build(BuildParams params) {
throw UnimplementedError(
'build is not implemented for ExtendedWebViewWidgetDelegate.');
}