From 0c3f6c9f3a25aef980fe83dbe2d2dbe86e105a6b Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 13 May 2025 18:43:16 -0400 Subject: [PATCH 1/5] android version bump and ios --- .../webview_flutter_android/CHANGELOG.md | 7 ++ .../webviewflutter/AndroidWebkitLibrary.g.kt | 66 +++++++++++++++++-- .../plugins/webviewflutter/ViewProxyApi.java | 10 +++ .../plugins/webviewflutter/ViewTest.java | 22 +++++++ .../example/pubspec.yaml | 4 ++ .../lib/src/android_webkit.g.dart | 64 ++++++++++++++++++ .../lib/src/android_webview_controller.dart | 11 ++++ .../pigeons/android_webkit.dart | 10 +++ .../webview_flutter_android/pubspec.yaml | 6 +- .../test/android_webview_controller_test.dart | 22 +++++++ ...android_webview_controller_test.mocks.dart | 32 +++++++++ ...oid_webview_cookie_manager_test.mocks.dart | 16 +++++ .../webview_android_widget_test.mocks.dart | 16 +++++ .../Tests/ScrollViewProxyAPITests.swift | 24 +++++++ .../ScrollViewProxyAPIDelegate.swift | 12 ++++ .../WebKitLibrary.g.swift | 58 ++++++++++++++++ .../example/pubspec.yaml | 4 ++ .../lib/src/common/web_kit.g.dart | 64 ++++++++++++++++++ .../lib/src/webkit_webview_controller.dart | 24 +++++++ .../pigeons/web_kit.dart | 10 +++ .../webview_flutter_wkwebview/pubspec.yaml | 4 ++ .../web_kit_webview_widget_test.mocks.dart | 16 +++++ .../test/webkit_webview_controller_test.dart | 58 ++++++++++++++++ .../webkit_webview_controller_test.mocks.dart | 16 +++++ 24 files changed, 571 insertions(+), 5 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 10bd622d985..cb79b683a75 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,3 +1,10 @@ +## 4.5.0 + +* Adds support to set whether to draw the scrollbar. See + `AndroidWebViewController.setVerticalScrollBarEnabled`, + `AndroidWebViewController.setHorizontalScrollBarEnabled`, + `AndroidWebViewController.supportsSetScrollBarsEnabled`. + ## 4.4.2 * Updates pigeon generated code to fix `ImplicitSamInstance` and `SyntheticAccessor` Kotlin lint diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt index f48cf24608a..bb77054da22 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt @@ -127,10 +127,6 @@ class AndroidWebkitLibraryPigeonInstanceManager( */ fun remove(identifier: Long): T? { logWarningIfFinalizationListenerHasStopped() - val instance: Any? = getInstance(identifier) - if (instance is WebViewProxyApi.WebViewPlatformView) { - instance.destroy() - } return strongInstances.remove(identifier) as T? } @@ -4840,6 +4836,20 @@ abstract class PigeonApiView( /** Return the scrolled position of this view. */ abstract fun getScrollPosition(pigeon_instance: android.view.View): WebViewPoint + /** + * Define whether the vertical scrollbar should be drawn or not. + * + * The scrollbar is not drawn by default. + */ + abstract fun setVerticalScrollBarEnabled(pigeon_instance: android.view.View, enabled: Boolean) + + /** + * Define whether the horizontal scrollbar should be drawn or not. + * + * The scrollbar is not drawn by default. + */ + abstract fun setHorizontalScrollBarEnabled(pigeon_instance: android.view.View, enabled: Boolean) + /** Set the over-scroll mode for this view. */ abstract fun setOverScrollMode(pigeon_instance: android.view.View, mode: OverScrollMode) @@ -4915,6 +4925,54 @@ abstract class PigeonApiView( channel.setMessageHandler(null) } } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.webview_flutter_android.View.setVerticalScrollBarEnabled", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val pigeon_instanceArg = args[0] as android.view.View + val enabledArg = args[1] as Boolean + val wrapped: List = + try { + api.setVerticalScrollBarEnabled(pigeon_instanceArg, enabledArg) + listOf(null) + } catch (exception: Throwable) { + AndroidWebkitLibraryPigeonUtils.wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.webview_flutter_android.View.setHorizontalScrollBarEnabled", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val pigeon_instanceArg = args[0] as android.view.View + val enabledArg = args[1] as Boolean + val wrapped: List = + try { + api.setHorizontalScrollBarEnabled(pigeon_instanceArg, enabledArg) + listOf(null) + } catch (exception: Throwable) { + AndroidWebkitLibraryPigeonUtils.wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } run { val channel = BasicMessageChannel( diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/ViewProxyApi.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/ViewProxyApi.java index e4925f9912d..c372c8e1dc7 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/ViewProxyApi.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/ViewProxyApi.java @@ -41,6 +41,16 @@ public WebViewPoint getScrollPosition(@NonNull View pigeon_instance) { return new WebViewPoint(pigeon_instance.getScrollX(), pigeon_instance.getScrollY()); } + @Override + public void setVerticalScrollBarEnabled(@NonNull View pigeon_instance, boolean enabled) { + pigeon_instance.setVerticalScrollBarEnabled(enabled); + } + + @Override + public void setHorizontalScrollBarEnabled(@NonNull View pigeon_instance, boolean enabled) { + pigeon_instance.setHorizontalScrollBarEnabled(enabled); + } + @Override public void setOverScrollMode(@NonNull View pigeon_instance, @NonNull OverScrollMode mode) { switch (mode) { diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/ViewTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/ViewTest.java index 4f806e5812d..70818df6424 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/ViewTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/ViewTest.java @@ -50,6 +50,28 @@ public void getScrollPosition() { assertEquals(value.getY(), api.getScrollPosition(instance).getY()); } + @Test + public void setVerticalScrollBarEnabled() { + final PigeonApiView api = new TestProxyApiRegistrar().getPigeonApiView(); + + final View instance = mock(View.class); + final boolean enabled = true; + api.setVerticalScrollBarEnabled(instance, enabled); + + verify(instance).setVerticalScrollBarEnabled(enabled); + } + + @Test + public void setHorizontalScrollBarEnabled() { + final PigeonApiView api = new TestProxyApiRegistrar().getPigeonApiView(); + + final View instance = mock(View.class); + final boolean enabled = false; + api.setHorizontalScrollBarEnabled(instance, enabled); + + verify(instance).setHorizontalScrollBarEnabled(enabled); + } + @Test public void setOverScrollMode() { final PigeonApiView api = new TestProxyApiRegistrar().getPigeonApiView(); diff --git a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml index de6c69e7806..0fb5a2af64a 100644 --- a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml @@ -33,3 +33,7 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins +dependency_overrides: + webview_flutter_platform_interface: {path: ../../../../packages/webview_flutter/webview_flutter_platform_interface} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart index c518f0a8432..93a23f43161 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart @@ -6611,6 +6611,70 @@ class View extends PigeonInternalProxyApiBaseClass { } } + /// Define whether the vertical scrollbar should be drawn or not. + /// + /// The scrollbar is not drawn by default. + Future setVerticalScrollBarEnabled(bool enabled) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecView; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.webview_flutter_android.View.setVerticalScrollBarEnabled'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, enabled]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + /// Define whether the horizontal scrollbar should be drawn or not. + /// + /// The scrollbar is not drawn by default. + Future setHorizontalScrollBarEnabled(bool enabled) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecView; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.webview_flutter_android.View.setHorizontalScrollBarEnabled'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, enabled]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + /// Set the over-scroll mode for this view. Future setOverScrollMode(OverScrollMode mode) async { final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart index c8326529e59..92937665912 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart @@ -732,6 +732,17 @@ class AndroidWebViewController extends PlatformWebViewController { return _webChromeClient.setSynchronousReturnValueForOnJsPrompt(true); } + @override + Future setVerticalScrollBarEnabled(bool enabled) => + _webView.setVerticalScrollBarEnabled(enabled); + + @override + Future setHorizontalScrollBarEnabled(bool enabled) => + _webView.setHorizontalScrollBarEnabled(enabled); + + @override + bool supportsSetScrollBarsEnabled() => true; + @override Future setOverScrollMode(WebViewOverScrollMode mode) { return switch (mode) { diff --git a/packages/webview_flutter/webview_flutter_android/pigeons/android_webkit.dart b/packages/webview_flutter/webview_flutter_android/pigeons/android_webkit.dart index 42a15fc68bd..84a9140804b 100644 --- a/packages/webview_flutter/webview_flutter_android/pigeons/android_webkit.dart +++ b/packages/webview_flutter/webview_flutter_android/pigeons/android_webkit.dart @@ -852,6 +852,16 @@ abstract class View { /// Return the scrolled position of this view. WebViewPoint getScrollPosition(); + /// Define whether the vertical scrollbar should be drawn or not. + /// + /// The scrollbar is not drawn by default. + void setVerticalScrollBarEnabled(bool enabled); + + /// Define whether the horizontal scrollbar should be drawn or not. + /// + /// The scrollbar is not drawn by default. + void setHorizontalScrollBarEnabled(bool enabled); + /// Set the over-scroll mode for this view. void setOverScrollMode(OverScrollMode mode); } diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index 5f6cb957df8..b4cb848474c 100644 --- a/packages/webview_flutter/webview_flutter_android/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_android description: A Flutter plugin that provides a WebView widget on Android. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 4.4.2 +version: 4.5.0 environment: sdk: ^3.6.0 @@ -33,3 +33,7 @@ topics: - html - webview - webview-flutter +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins +dependency_overrides: + webview_flutter_platform_interface: {path: ../../../packages/webview_flutter/webview_flutter_platform_interface} diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart index 87bab7f8f5d..59aa998703c 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart @@ -1451,6 +1451,28 @@ void main() { verify(mockWebView.scrollBy(4, 2)).called(1); }); + test('verticalScrollBarEnabled', () async { + final MockWebView mockWebView = MockWebView(); + final AndroidWebViewController controller = createControllerWithMocks( + mockWebView: mockWebView, + ); + + await controller.setVerticalScrollBarEnabled(false); + + verify(mockWebView.setVerticalScrollBarEnabled(false)).called(1); + }); + + test('horizontalScrollBarEnabled', () async { + final MockWebView mockWebView = MockWebView(); + final AndroidWebViewController controller = createControllerWithMocks( + mockWebView: mockWebView, + ); + + await controller.setHorizontalScrollBarEnabled(false); + + verify(mockWebView.setHorizontalScrollBarEnabled(false)).called(1); + }); + test('getScrollPosition', () async { final MockWebView mockWebView = MockWebView(); final AndroidWebViewController controller = createControllerWithMocks( diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart index 10247006657..124fff5220f 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart @@ -689,6 +689,22 @@ class MockAndroidWebViewController extends _i1.Mock returnValueForMissingStub: _i8.Future.value(), ) as _i8.Future); + @override + _i8.Future setVerticalScrollBarEnabled(bool? enabled) => + (super.noSuchMethod( + Invocation.method(#setVerticalScrollBarEnabled, [enabled]), + returnValue: _i8.Future.value(), + returnValueForMissingStub: _i8.Future.value(), + ) as _i8.Future); + + @override + _i8.Future setHorizontalScrollBarEnabled(bool? enabled) => + (super.noSuchMethod( + Invocation.method(#setHorizontalScrollBarEnabled, [enabled]), + returnValue: _i8.Future.value(), + returnValueForMissingStub: _i8.Future.value(), + ) as _i8.Future); + @override _i8.Future setOverScrollMode(_i3.WebViewOverScrollMode? mode) => (super.noSuchMethod( @@ -2485,6 +2501,22 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), ) as _i8.Future<_i2.WebViewPoint>); + @override + _i8.Future setVerticalScrollBarEnabled(bool? enabled) => + (super.noSuchMethod( + Invocation.method(#setVerticalScrollBarEnabled, [enabled]), + returnValue: _i8.Future.value(), + returnValueForMissingStub: _i8.Future.value(), + ) as _i8.Future); + + @override + _i8.Future setHorizontalScrollBarEnabled(bool? enabled) => + (super.noSuchMethod( + Invocation.method(#setHorizontalScrollBarEnabled, [enabled]), + returnValue: _i8.Future.value(), + returnValueForMissingStub: _i8.Future.value(), + ) as _i8.Future); + @override _i8.Future setOverScrollMode(_i2.OverScrollMode? mode) => (super.noSuchMethod( diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart index b44e59a8c08..0bbed84ea8f 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart @@ -473,6 +473,22 @@ class MockAndroidWebViewController extends _i1.Mock returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override + _i5.Future setVerticalScrollBarEnabled(bool? enabled) => + (super.noSuchMethod( + Invocation.method(#setVerticalScrollBarEnabled, [enabled]), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future setHorizontalScrollBarEnabled(bool? enabled) => + (super.noSuchMethod( + Invocation.method(#setHorizontalScrollBarEnabled, [enabled]), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + @override _i5.Future setOverScrollMode(_i3.WebViewOverScrollMode? mode) => (super.noSuchMethod( diff --git a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart index 6eebf3a56d8..8ad932452cc 100644 --- a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart @@ -547,6 +547,22 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), ) as _i4.Future<_i2.WebViewPoint>); + @override + _i4.Future setVerticalScrollBarEnabled(bool? enabled) => + (super.noSuchMethod( + Invocation.method(#setVerticalScrollBarEnabled, [enabled]), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + + @override + _i4.Future setHorizontalScrollBarEnabled(bool? enabled) => + (super.noSuchMethod( + Invocation.method(#setHorizontalScrollBarEnabled, [enabled]), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future setOverScrollMode(_i2.OverScrollMode? mode) => (super.noSuchMethod( diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewProxyAPITests.swift index 60f39d11f1b..e991cdf3747 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/ScrollViewProxyAPITests.swift @@ -125,6 +125,30 @@ class ScrollViewProxyAPITests: XCTestCase { XCTAssertEqual(instance.alwaysBounceHorizontal, value) } + + @MainActor func testSetShowsVerticalScrollIndicator() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) + + let instance = TestScrollView() + let value = true + try? api.pigeonDelegate.setShowsVerticalScrollIndicator( + pigeonApi: api, pigeonInstance: instance, value: value) + + XCTAssertEqual(instance.showsVerticalScrollIndicator, value) + } + + @MainActor func testSetShowsHorizontalScrollIndicator() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiUIScrollView(registrar) + + let instance = TestScrollView() + let value = true + try? api.pigeonDelegate.setShowsHorizontalScrollIndicator( + pigeonApi: api, pigeonInstance: instance, value: value) + + XCTAssertEqual(instance.showsHorizontalScrollIndicator, value) + } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ScrollViewProxyAPIDelegate.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ScrollViewProxyAPIDelegate.swift index bb098a29a0c..09084b1d10e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ScrollViewProxyAPIDelegate.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/ScrollViewProxyAPIDelegate.swift @@ -88,5 +88,17 @@ class ScrollViewProxyAPIDelegate: PigeonApiDelegateUIScrollView { ) throws { pigeonInstance.alwaysBounceHorizontal = value } + + func setShowsVerticalScrollIndicator( + pigeonApi: PigeonApiUIScrollView, pigeonInstance: UIScrollView, value: Bool + ) throws { + pigeonInstance.showsVerticalScrollIndicator = value + } + + func setShowsHorizontalScrollIndicator( + pigeonApi: PigeonApiUIScrollView, pigeonInstance: UIScrollView, value: Bool + ) throws { + pigeonInstance.showsHorizontalScrollIndicator = value + } #endif } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/WebKitLibrary.g.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/WebKitLibrary.g.swift index d99e60eb5d5..74b4fecc955 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/WebKitLibrary.g.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/WebKitLibrary.g.swift @@ -3024,6 +3024,20 @@ protocol PigeonApiDelegateUIScrollView { func setAlwaysBounceHorizontal( pigeonApi: PigeonApiUIScrollView, pigeonInstance: UIScrollView, value: Bool) throws #endif + #if !os(macOS) + /// Whether the vertical scroll indicator is visible. + /// + /// The default value is true. + func setShowsVerticalScrollIndicator( + pigeonApi: PigeonApiUIScrollView, pigeonInstance: UIScrollView, value: Bool) throws + #endif + #if !os(macOS) + /// Whether the horizontal scroll indicator is visible. + /// + /// The default value is true. + func setShowsHorizontalScrollIndicator( + pigeonApi: PigeonApiUIScrollView, pigeonInstance: UIScrollView, value: Bool) throws + #endif } protocol PigeonApiProtocolUIScrollView { @@ -3242,6 +3256,50 @@ final class PigeonApiUIScrollView: PigeonApiProtocolUIScrollView { setAlwaysBounceHorizontalChannel.setMessageHandler(nil) } #endif + #if !os(macOS) + let setShowsVerticalScrollIndicatorChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollView.setShowsVerticalScrollIndicator", + binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + setShowsVerticalScrollIndicatorChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! UIScrollView + let valueArg = args[1] as! Bool + do { + try api.pigeonDelegate.setShowsVerticalScrollIndicator( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, value: valueArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + setShowsVerticalScrollIndicatorChannel.setMessageHandler(nil) + } + #endif + #if !os(macOS) + let setShowsHorizontalScrollIndicatorChannel = FlutterBasicMessageChannel( + name: + "dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollView.setShowsHorizontalScrollIndicator", + binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + setShowsHorizontalScrollIndicatorChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! UIScrollView + let valueArg = args[1] as! Bool + do { + try api.pigeonDelegate.setShowsHorizontalScrollIndicator( + pigeonApi: api, pigeonInstance: pigeonInstanceArg, value: valueArg) + reply(wrapResult(nil)) + } catch { + reply(wrapError(error)) + } + } + } else { + setShowsHorizontalScrollIndicatorChannel.setMessageHandler(nil) + } + #endif } #if !os(macOS) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml index fa7f2114200..23fa31f4d5a 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml @@ -34,3 +34,7 @@ flutter: - assets/www/styles/style.css # Test certificate used to create a test native `SecTrust`. - assets/test_cert.der +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins +dependency_overrides: + webview_flutter_platform_interface: {path: ../../../../packages/webview_flutter/webview_flutter_platform_interface} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/common/web_kit.g.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/common/web_kit.g.dart index 5d3f3ee1fe7..2df3a6c23cc 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/common/web_kit.g.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/common/web_kit.g.dart @@ -3174,6 +3174,70 @@ class UIScrollView extends UIView { } } + /// Whether the vertical scroll indicator is visible. + /// + /// The default value is true. + Future setShowsVerticalScrollIndicator(bool value) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecUIScrollView; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollView.setShowsVerticalScrollIndicator'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, value]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + + /// Whether the horizontal scroll indicator is visible. + /// + /// The default value is true. + Future setShowsHorizontalScrollIndicator(bool value) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecUIScrollView; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const String pigeonVar_channelName = + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollView.setShowsHorizontalScrollIndicator'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([this, value]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return; + } + } + @override UIScrollView pigeon_copy() { return UIScrollView.pigeon_detached( diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index 57f188e9e71..2da49f04fae 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -580,6 +580,30 @@ class WebKitWebViewController extends PlatformWebViewController { return Offset(position[0], position[1]); } + @override + Future setVerticalScrollBarEnabled(bool enabled) { + return _webView.scrollView.setShowsVerticalScrollIndicator(enabled); + } + + @override + Future setHorizontalScrollBarEnabled(bool enabled) { + return _webView.scrollView.setShowsHorizontalScrollIndicator(enabled); + } + + @override + bool supportsSetScrollBarsEnabled() { + switch (defaultTargetPlatform) { + case TargetPlatform.iOS: + return true; + case TargetPlatform.macOS: + return false; + case _: + throw UnsupportedError( + 'This plugin does not support this platform: $defaultTargetPlatform', + ); + } + } + @override Future setBackgroundColor(Color color) { return Future.wait(>[ diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart b/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart index 0cf38a4e9ee..5a369d67315 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart @@ -642,6 +642,16 @@ abstract class UIScrollView extends UIView { /// the scroll view allows horizontal dragging even if the content is smaller /// than the bounds of the scroll view. void setAlwaysBounceHorizontal(bool value); + + /// Whether the vertical scroll indicator is visible. + /// + /// The default value is true. + void setShowsVerticalScrollIndicator(bool value); + + /// Whether the horizontal scroll indicator is visible. + /// + /// The default value is true. + void setShowsHorizontalScrollIndicator(bool value); } /// A collection of properties that you use to initialize a web view.. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index 64bf86387d4..e4ade0e8324 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml @@ -38,3 +38,7 @@ topics: - html - webview - webview-flutter +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins +dependency_overrides: + webview_flutter_platform_interface: {path: ../../../packages/webview_flutter/webview_flutter_platform_interface} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_webview_widget_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_webview_widget_test.mocks.dart index 88df3f478fc..d6981859154 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_webview_widget_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_webview_widget_test.mocks.dart @@ -200,6 +200,22 @@ class MockUIScrollView extends _i1.Mock implements _i2.UIScrollView { returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future setShowsVerticalScrollIndicator(bool? value) => + (super.noSuchMethod( + Invocation.method(#setShowsVerticalScrollIndicator, [value]), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + + @override + _i4.Future setShowsHorizontalScrollIndicator(bool? value) => + (super.noSuchMethod( + Invocation.method(#setShowsHorizontalScrollIndicator, [value]), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); + @override _i2.UIScrollView pigeon_copy() => (super.noSuchMethod( Invocation.method(#pigeon_copy, []), diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart index c31ee0f790f..767f35fdc03 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart @@ -679,6 +679,64 @@ void main() { debugDefaultTargetPlatformOverride = null; }); + test('setVerticalScrollBarEnabled', () async { + final MockUIScrollView mockScrollView = MockUIScrollView(); + + final WebKitWebViewController controller = createControllerWithMocks( + mockScrollView: mockScrollView, + ); + + debugDefaultTargetPlatformOverride = TargetPlatform.iOS; + + await controller.setVerticalScrollBarEnabled(true); + verify(mockScrollView.setShowsVerticalScrollIndicator(true)); + + debugDefaultTargetPlatformOverride = null; + }); + + test('setHorizontalScrollBarEnabled', () async { + final MockUIScrollView mockScrollView = MockUIScrollView(); + + final WebKitWebViewController controller = createControllerWithMocks( + mockScrollView: mockScrollView, + ); + + debugDefaultTargetPlatformOverride = TargetPlatform.iOS; + + await controller.setHorizontalScrollBarEnabled(false); + verify(mockScrollView.setShowsHorizontalScrollIndicator(false)); + + debugDefaultTargetPlatformOverride = null; + }); + + test('supportsSetScrollBarsEnabled returns true for iOS', () { + final MockUIScrollView mockScrollView = MockUIScrollView(); + + final WebKitWebViewController controller = createControllerWithMocks( + mockScrollView: mockScrollView, + ); + + debugDefaultTargetPlatformOverride = TargetPlatform.iOS; + + expect(controller.supportsSetScrollBarsEnabled(), true); + + debugDefaultTargetPlatformOverride = null; + }); + + test('supportsSetScrollBarsEnabled returns false for macOS', () { + final MockUIScrollView mockScrollView = MockUIScrollView(); + + final WebKitWebViewController controller = createControllerWithMocks( + mockScrollView: mockScrollView, + ); + + debugDefaultTargetPlatformOverride = TargetPlatform.macOS; + + expect(controller.supportsSetScrollBarsEnabled(), false); + + debugDefaultTargetPlatformOverride = null; + }); + test('disable zoom', () async { final MockWKUserContentController mockUserContentController = MockWKUserContentController(); diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.mocks.dart index 3bbeec9f6c3..f5f1ce191c0 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.mocks.dart @@ -193,6 +193,22 @@ class MockUIScrollView extends _i1.Mock implements _i2.UIScrollView { returnValueForMissingStub: _i3.Future.value(), ) as _i3.Future); + @override + _i3.Future setShowsVerticalScrollIndicator(bool? value) => + (super.noSuchMethod( + Invocation.method(#setShowsVerticalScrollIndicator, [value]), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + _i3.Future setShowsHorizontalScrollIndicator(bool? value) => + (super.noSuchMethod( + Invocation.method(#setShowsHorizontalScrollIndicator, [value]), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + @override _i2.UIScrollView pigeon_copy() => (super.noSuchMethod( Invocation.method(#pigeon_copy, []), From 5bdc75382dda6c25ef7412d0df0b85f2a5eaeccd Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 13 May 2025 18:44:04 -0400 Subject: [PATCH 2/5] ios version bump --- .../webview_flutter/webview_flutter_wkwebview/CHANGELOG.md | 7 +++++++ .../webview_flutter/webview_flutter_wkwebview/pubspec.yaml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index 2723c74a094..b049ab3e773 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,3 +1,10 @@ +## 3.21.0 + +* Adds support to set whether to draw the scrollbar. See + `WebKitWebViewController.setVerticalScrollBarEnabled`, + `WebKitWebViewController.setHorizontalScrollBarEnabled`, + `WebKitWebViewController.supportsSetScrollBarsEnabled`. + ## 3.20.0 * Adds support to disable a preview of the destination for a link. See diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index e4ade0e8324..5dc04f3c3d0 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_wkwebview description: A Flutter plugin that provides a WebView widget based on Apple's WKWebView control. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_wkwebview issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 3.20.0 +version: 3.21.0 environment: sdk: ^3.5.0 From c451e05bfcb1339018400377fdbc787a088d007e Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 13 May 2025 18:51:35 -0400 Subject: [PATCH 3/5] fix pubspecs and dispose webview --- .../flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt | 4 ++++ .../webview_flutter_android/example/pubspec.yaml | 4 ---- packages/webview_flutter/webview_flutter_android/pubspec.yaml | 4 ---- .../webview_flutter_wkwebview/example/pubspec.yaml | 4 ---- .../webview_flutter/webview_flutter_wkwebview/pubspec.yaml | 4 ---- 5 files changed, 4 insertions(+), 16 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt index bb77054da22..bd1c4de2327 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt @@ -127,6 +127,10 @@ class AndroidWebkitLibraryPigeonInstanceManager( */ fun remove(identifier: Long): T? { logWarningIfFinalizationListenerHasStopped() + val instance: Any? = getInstance(identifier) + if (instance is WebViewProxyApi.WebViewPlatformView) { + instance.destroy() + } return strongInstances.remove(identifier) as T? } diff --git a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml index 0fb5a2af64a..de6c69e7806 100644 --- a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml @@ -33,7 +33,3 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins -dependency_overrides: - webview_flutter_platform_interface: {path: ../../../../packages/webview_flutter/webview_flutter_platform_interface} diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index b4cb848474c..469be25d547 100644 --- a/packages/webview_flutter/webview_flutter_android/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/pubspec.yaml @@ -33,7 +33,3 @@ topics: - html - webview - webview-flutter -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins -dependency_overrides: - webview_flutter_platform_interface: {path: ../../../packages/webview_flutter/webview_flutter_platform_interface} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml index 23fa31f4d5a..fa7f2114200 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml @@ -34,7 +34,3 @@ flutter: - assets/www/styles/style.css # Test certificate used to create a test native `SecTrust`. - assets/test_cert.der -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins -dependency_overrides: - webview_flutter_platform_interface: {path: ../../../../packages/webview_flutter/webview_flutter_platform_interface} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index 5dc04f3c3d0..67763da51ad 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml @@ -38,7 +38,3 @@ topics: - html - webview - webview-flutter -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/blob/master/docs/ecosystem/contributing/README.md#changing-federated-plugins -dependency_overrides: - webview_flutter_platform_interface: {path: ../../../packages/webview_flutter/webview_flutter_platform_interface} From 17d91c5bbaed58d70b3ac46d03080d92e674b592 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 13 May 2025 19:14:06 -0400 Subject: [PATCH 4/5] version bump --- .../webview_flutter_android/example/pubspec.yaml | 4 ++-- packages/webview_flutter/webview_flutter_android/pubspec.yaml | 2 +- .../webview_flutter_wkwebview/example/pubspec.yaml | 2 +- .../webview_flutter/webview_flutter_wkwebview/pubspec.yaml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml index de6c69e7806..1ccb250fcf6 100644 --- a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml @@ -16,8 +16,8 @@ dependencies: # See https://dart.dev/tools/pub/dependencies#version-constraints # The example app is bundled with the plugin so we use a path dependency on # the parent directory to use the current plugin's version. - path: ../ - webview_flutter_platform_interface: ^2.11.0 + path: ../f + webview_flutter_platform_interface: ^2.12.0 dev_dependencies: espresso: ^0.4.0 diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index 469be25d547..59cbf9fa2ee 100644 --- a/packages/webview_flutter/webview_flutter_android/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/pubspec.yaml @@ -20,7 +20,7 @@ flutter: dependencies: flutter: sdk: flutter - webview_flutter_platform_interface: ^2.11.0 + webview_flutter_platform_interface: ^2.12.0 dev_dependencies: build_runner: ^2.1.4 diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml index fa7f2114200..e9898b31e7d 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml @@ -10,7 +10,7 @@ dependencies: flutter: sdk: flutter path_provider: ^2.0.6 - webview_flutter_platform_interface: ^2.11.0 + webview_flutter_platform_interface: ^2.12.0 webview_flutter_wkwebview: # When depending on this package from a real application you should use: # webview_flutter: ^x.y.z diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index 67763da51ad..396beb70a5a 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml @@ -25,7 +25,7 @@ dependencies: flutter: sdk: flutter path: ^1.8.0 - webview_flutter_platform_interface: ^2.11.0 + webview_flutter_platform_interface: ^2.12.0 dev_dependencies: build_runner: ^2.1.5 From 119bc5ad46967884cba0785be83de3cdebdc3981 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 13 May 2025 19:14:28 -0400 Subject: [PATCH 5/5] fix f --- .../webview_flutter_android/example/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml index 1ccb250fcf6..d5cd0d9827c 100644 --- a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml @@ -16,7 +16,7 @@ dependencies: # See https://dart.dev/tools/pub/dependencies#version-constraints # The example app is bundled with the plugin so we use a path dependency on # the parent directory to use the current plugin's version. - path: ../f + path: ../ webview_flutter_platform_interface: ^2.12.0 dev_dependencies: