diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
index 145bc8f..26fb5ab 100644
--- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
@@ -1,5 +1,6 @@
-## NEXT
+## 2.8.3
 
+* Fixes a bug causing `debuggingEnabled` to always be set to true.
 * Fixes an integration test race condition.
 
 ## 2.8.2
diff --git a/packages/webview_flutter/webview_flutter_android/lib/webview_android_widget.dart b/packages/webview_flutter/webview_flutter_android/lib/webview_android_widget.dart
index bf85ac9..7200aaa 100644
--- a/packages/webview_flutter/webview_flutter_android/lib/webview_android_widget.dart
+++ b/packages/webview_flutter/webview_flutter_android/lib/webview_android_widget.dart
@@ -708,6 +708,6 @@
   ///
   /// See [android_webview.WebView].setWebContentsDebuggingEnabled.
   Future<void> setWebContentsDebuggingEnabled(bool enabled) {
-    return android_webview.WebView.setWebContentsDebuggingEnabled(true);
+    return android_webview.WebView.setWebContentsDebuggingEnabled(enabled);
   }
 }
diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml
index b2329d3..704dc67 100644
--- a/packages/webview_flutter/webview_flutter_android/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_android/pubspec.yaml
@@ -2,7 +2,7 @@
 description: A Flutter plugin that provides a WebView widget on Android.
 repository: https://github.com/flutter/plugins/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: 2.8.2
+version: 2.8.3
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart
index 8688a19..91385ff 100644
--- a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart
@@ -32,7 +32,7 @@
   TestWidgetsFlutterBinding.ensureInitialized();
 
   group('Android WebView', () {
-    group('$WebView', () {
+    group('WebView', () {
       late MockTestWebViewHostApi mockPlatformHostApi;
 
       late InstanceManager instanceManager;
@@ -55,11 +55,16 @@
         verify(mockPlatformHostApi.create(webViewInstanceId, false));
       });
 
-      test('setWebContentsDebuggingEnabled', () {
+      test('setWebContentsDebuggingEnabled true', () {
         WebView.setWebContentsDebuggingEnabled(true);
         verify(mockPlatformHostApi.setWebContentsDebuggingEnabled(true));
       });
 
+      test('setWebContentsDebuggingEnabled false', () {
+        WebView.setWebContentsDebuggingEnabled(false);
+        verify(mockPlatformHostApi.setWebContentsDebuggingEnabled(false));
+      });
+
       test('loadData', () {
         webView.loadData(
           data: 'hello',
@@ -314,7 +319,7 @@
       });
     });
 
-    group('$WebSettings', () {
+    group('WebSettings', () {
       late MockTestWebSettingsHostApi mockPlatformHostApi;
 
       late InstanceManager instanceManager;
@@ -440,7 +445,7 @@
       });
     });
 
-    group('$JavaScriptChannel', () {
+    group('JavaScriptChannel', () {
       late JavaScriptChannelFlutterApiImpl flutterApi;
 
       late InstanceManager instanceManager;
@@ -468,7 +473,7 @@
       });
     });
 
-    group('$WebViewClient', () {
+    group('WebViewClient', () {
       late WebViewClientFlutterApiImpl flutterApi;
 
       late InstanceManager instanceManager;
@@ -583,7 +588,7 @@
       });
     });
 
-    group('$DownloadListener', () {
+    group('DownloadListener', () {
       late DownloadListenerFlutterApiImpl flutterApi;
 
       late InstanceManager instanceManager;
@@ -621,7 +626,7 @@
       });
     });
 
-    group('$WebChromeClient', () {
+    group('WebChromeClient', () {
       late WebChromeClientFlutterApiImpl flutterApi;
 
       late InstanceManager instanceManager;
diff --git a/packages/webview_flutter/webview_flutter_android/test/instance_manager_test.dart b/packages/webview_flutter/webview_flutter_android/test/instance_manager_test.dart
index fd020fc..3aeb005 100644
--- a/packages/webview_flutter/webview_flutter_android/test/instance_manager_test.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/instance_manager_test.dart
@@ -6,7 +6,7 @@
 import 'package:webview_flutter_android/src/instance_manager.dart';
 
 void main() {
-  group('$InstanceManager', () {
+  group('InstanceManager', () {
     late InstanceManager testInstanceManager;
 
     setUp(() {
diff --git a/packages/webview_flutter/webview_flutter_android/test/webview_android_widget_test.dart b/packages/webview_flutter/webview_flutter_android/test/webview_android_widget_test.dart
index fed1c11..af10939 100644
--- a/packages/webview_flutter/webview_flutter_android/test/webview_android_widget_test.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/webview_android_widget_test.dart
@@ -11,9 +11,13 @@
 import 'package:mockito/mockito.dart';
 import 'package:webview_flutter_android/src/android_webview.dart'
     as android_webview;
+import 'package:webview_flutter_android/src/android_webview_api_impls.dart';
+import 'package:webview_flutter_android/src/instance_manager.dart';
 import 'package:webview_flutter_android/webview_android_widget.dart';
 import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart';
 
+import 'android_webview.pigeon.dart';
+import 'android_webview_test.mocks.dart' show MockTestWebViewHostApi;
 import 'webview_android_widget_test.mocks.dart';
 
 @GenerateMocks(<Type>[
@@ -31,7 +35,7 @@
 void main() {
   TestWidgetsFlutterBinding.ensureInitialized();
 
-  group('$WebViewAndroidWidget', () {
+  group('WebViewAndroidWidget', () {
     late MockFlutterAssetManager mockFlutterAssetManager;
     late MockWebView mockWebView;
     late MockWebSettings mockWebSettings;
@@ -93,7 +97,7 @@
       webChromeClient = testController.webChromeClient;
     }
 
-    testWidgets('$WebViewAndroidWidget', (WidgetTester tester) async {
+    testWidgets('WebViewAndroidWidget', (WidgetTester tester) async {
       await buildWidget(tester);
 
       verify(mockWebSettings.setDomStorageEnabled(true));
@@ -119,7 +123,7 @@
       },
     );
 
-    group('$CreationParams', () {
+    group('CreationParams', () {
       testWidgets('initialUrl', (WidgetTester tester) async {
         await buildWidget(
           tester,
@@ -201,7 +205,7 @@
         expect(javaScriptChannels[1].channelName, 'b');
       });
 
-      group('$WebSettings', () {
+      group('WebSettings', () {
         testWidgets('javascriptMode', (WidgetTester tester) async {
           await buildWidget(
             tester,
@@ -232,7 +236,7 @@
           expect(testController.webViewClient.shouldOverrideUrlLoading, isTrue);
         });
 
-        testWidgets('debuggingEnabled', (WidgetTester tester) async {
+        testWidgets('debuggingEnabled true', (WidgetTester tester) async {
           await buildWidget(
             tester,
             creationParams: CreationParams(
@@ -247,6 +251,21 @@
           verify(mockWebViewProxy.setWebContentsDebuggingEnabled(true));
         });
 
+        testWidgets('debuggingEnabled false', (WidgetTester tester) async {
+          await buildWidget(
+            tester,
+            creationParams: CreationParams(
+              webSettings: WebSettings(
+                userAgent: const WebSetting<String?>.absent(),
+                debuggingEnabled: false,
+                hasNavigationDelegate: false,
+              ),
+            ),
+          );
+
+          verify(mockWebViewProxy.setWebContentsDebuggingEnabled(false));
+        });
+
         testWidgets('userAgent', (WidgetTester tester) async {
           await buildWidget(
             tester,
@@ -278,7 +297,7 @@
       });
     });
 
-    group('$WebViewPlatformController', () {
+    group('WebViewPlatformController', () {
       testWidgets('loadFile without "file://" prefix',
           (WidgetTester tester) async {
         await buildWidget(tester);
@@ -667,7 +686,7 @@
       });
     });
 
-    group('$WebViewPlatformCallbacksHandler', () {
+    group('WebViewPlatformCallbacksHandler', () {
       testWidgets('onPageStarted', (WidgetTester tester) async {
         await buildWidget(tester);
         webViewClient.onPageStarted(mockWebView, 'https://google.com');
@@ -773,7 +792,7 @@
         verify(mockWebView.loadUrl('https://google.com', <String, String>{}));
       });
 
-      group('$JavascriptChannelRegistry', () {
+      group('JavascriptChannelRegistry', () {
         testWidgets('onJavascriptChannelMessage', (WidgetTester tester) async {
           await buildWidget(tester);
 
@@ -792,4 +811,32 @@
       });
     });
   });
+
+  group('WebViewProxy', () {
+    late MockTestWebViewHostApi mockPlatformHostApi;
+    late InstanceManager instanceManager;
+
+    setUp(() {
+      // WebViewProxy calls static methods that can't be mocked, so the mocks
+      // have to be set up at the next layer down, by mocking the implementation
+      // of WebView itstelf.
+      mockPlatformHostApi = MockTestWebViewHostApi();
+      TestWebViewHostApi.setup(mockPlatformHostApi);
+      instanceManager = InstanceManager();
+      android_webview.WebView.api =
+          WebViewHostApiImpl(instanceManager: instanceManager);
+    });
+
+    test('setWebContentsDebuggingEnabled true', () {
+      const WebViewProxy webViewProxy = WebViewProxy();
+      webViewProxy.setWebContentsDebuggingEnabled(true);
+      verify(mockPlatformHostApi.setWebContentsDebuggingEnabled(true));
+    });
+
+    test('setWebContentsDebuggingEnabled false', () {
+      const WebViewProxy webViewProxy = WebViewProxy();
+      webViewProxy.setWebContentsDebuggingEnabled(false);
+      verify(mockPlatformHostApi.setWebContentsDebuggingEnabled(false));
+    });
+  });
 }
