Repository: flutter
Issue: Support to manually dispose a `WebViewController`
Labels: c: new feature,platform-android,p: webview,package,P2,team-android,triaged-android


## Steps to Reproduce


1. Execute `flutter run` on the code sample 
2. Toggle WebViews on and off using buttons
3. Look at console

**Expected results:** <!-- what did you want to see? -->
No console.logs should be written after a WebView's parent widget is destroyed.
**Actual results:** <!-- what did you see? -->
console.log continues to be called after a WebView's parent is destroyed.
 
<details>
<summary>Code sample</summary>

```dart

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return const MaterialApp(home: AppPage());
  }
}

class AppPage extends StatefulWidget {
  const AppPage({super.key});

  @override
  State<AppPage> createState() => _AppPageState();
}

class _AppPageState extends State<AppPage> {
  bool _showWebView = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        alignment: Alignment.center,
        children: [
          if (_showWebView) const WebviewExample(),
          Container(
            color: const Color.fromARGB(200, 255, 255, 255),
          ),
          Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              TextButton(
                onPressed: () {
                  setState(() {
                    _showWebView = !_showWebView;
                  });
                },
                child: const Text(
                  "Show Webview",
                  style: TextStyle(color: Colors.black),
                ),
              ),
              TextButton(
                onPressed: () {
                  Navigator.of(context)
                      .push(MaterialPageRoute(builder: (context) {
                    return Scaffold(
                      body: const WebviewExample(),
                      appBar: AppBar(),
                    );
                  }));
                },
                child: const Text(
                  "Push Webview Page",
                  style: TextStyle(color: Colors.black),
                ),
              ),
            ],
          )
        ],
      ),
    );
  }
}


var index = 0;

class WebviewExample extends StatefulWidget {
  const WebviewExample({super.key});

  @override
  State<WebviewExample> createState() => _WebviewExampleState();
}

class _WebviewExampleState extends State<WebviewExample> {
  final controller = WebViewController.fromPlatformCreationParams(
      const PlatformWebViewControllerCreationParams());

  @override
  void initState() {
    super.initState();
    controller
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..setNavigationDelegate(NavigationDelegate(
        onPageFinished: (url) {
          controller.runJavaScript("""(
                  function(){setInterval(()=>console.log("howdy from webview #$index"),1000)}
                )()""");
        },
      ))
      ..loadRequest(
        Uri.parse("https://www.example.com/"),
      );

    index++;
  }

  @override
  Widget build(BuildContext context) {
    return WebViewWidget(controller: controller);
  }
}

```


</details>

<details>
  <summary>Logs</summary>


```

[   +1 ms] Flutter run key commands.
[        ] r Hot reload. 🔥🔥🔥
[        ] R Hot restart.
[        ] h List all available interactive commands.
[        ] d Detach (terminate "flutter run" but leave application running).
[        ] c Clear the screen
[        ] q Quit (terminate the application on the device).
[        ] 💪 Running with sound null safety 💪
[        ] An Observatory debugger and profiler on sdk gphone64 arm64 is available at: http://127.0.0.1:52341/cCkpWnHg_3k=/
[ +178 ms] The Flutter DevTools debugger and profiler on sdk gphone64 arm64 is available at:
                    http://127.0.0.1:9102?uri=http://127.0.0.1:52341/cCkpWnHg_3k=/
[+3198 ms] W/ziparchive(30973): Unable to open
'/data/app/~~pqGf5_2dD_8SAWTijQ5ylQ==/com.google.android.trichromelibrary_535912834-yuZ8-GCeHmeFDEQJARuQxg==/base.dm': No such file or
directory
[        ] W/ziparchive(30973): Unable to open
'/data/app/~~pqGf5_2dD_8SAWTijQ5ylQ==/com.google.android.trichromelibrary_535912834-yuZ8-GCeHmeFDEQJARuQxg==/base.dm': No such file or
directory
[   +3 ms] W/com.example.bu(30973): Entry not found
[        ] D/nativeloader(30973): Configuring classloader-namespace for other apk
/data/app/~~pqGf5_2dD_8SAWTijQ5ylQ==/com.google.android.trichromelibrary_535912834-yuZ8-GCeHmeFDEQJARuQxg==/base.apk.
target_sdk_version=33, uses_libraries=ALL,
library_path=/data/app/~~NbAIvCfyFvlaETKU937gUA==/com.google.android.webview-53m-KKSuMiHgCej6ZwhdvQ==/lib/arm64:/data/app/~~NbAIvCfyFvlaET
KU937gUA==/com.google.android.webview-53m-KKSuMiHgCej6ZwhdvQ==/base.apk!/lib/arm64-v8a:/data/app/~~pqGf5_2dD_8SAWTijQ5ylQ==/com.google.and
roid.trichromelibrary_535912834-yuZ8-GCeHmeFDEQJARuQxg==/base.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand
[   +9 ms] D/nativeloader(30973): Configuring classloader-namespace for other apk
/data/app/~~NbAIvCfyFvlaETKU937gUA==/com.google.android.webview-53m-KKSuMiHgCej6ZwhdvQ==/base.apk. target_sdk_version=33, uses_libraries=,
library_path=/data/app/~~NbAIvCfyFvlaETKU937gUA==/com.google.android.webview-53m-KKSuMiHgCej6ZwhdvQ==/lib/arm64:/data/app/~~NbAIvCfyFvlaET
KU937gUA==/com.google.android.webview-53m-KKSuMiHgCej6ZwhdvQ==/base.apk!/lib/arm64-v8a:/data/app/~~pqGf5_2dD_8SAWTijQ5ylQ==/com.google.and
roid.trichromelibrary_535912834-yuZ8-GCeHmeFDEQJARuQxg==/base.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand
[  +10 ms] I/WebViewFactory(30973): Loading com.google.android.webview version 108.0.5359.128 (code 535912834)
[  +86 ms] W/com.example.bu(30973): Accessing hidden method Landroid/os/Trace;->isTagEnabled(J)Z (unsupported, reflection, allowed)
[        ] W/com.example.bu(30973): Accessing hidden method Landroid/os/Trace;->traceBegin(JLjava/lang/String;)V (unsupported, reflection,
allowed)
[        ] W/com.example.bu(30973): Accessing hidden method Landroid/os/Trace;->traceEnd(J)V (unsupported, reflection, allowed)
[        ] W/com.example.bu(30973): Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (unsupported,
reflection, allowed)
[        ] W/com.example.bu(30973): Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (unsupported,
reflection, allowed)
[   +9 ms] I/cr_WVCFactoryProvider(30973): Loaded version=108.0.5359.128 minSdkVersion=29 isBundle=true multiprocess=true packageId=2
[  +36 ms] I/cr_LibraryLoader(30973): Successfully loaded native library
[   +3 ms] I/cr_CachingUmaRecorder(30973): Flushed 9 samples from 9 histograms.
[ +183 ms] W/chromium(30973): [WARNING:dns_config_service_android.cc(115)] Failed to read DnsConfig.
[  +27 ms] E/chromium(30973): [ERROR:simple_index_file.cc(322)] Failed to write the temporary index file
[  +25 ms] D/CompatibilityChangeReporter(30973): Compat change id reported: 171228096; UID 10146; state: ENABLED
[  +34 ms] W/com.example.bu(30973): Accessing hidden method Landroid/media/AudioManager;->getOutputLatency(I)I (unsupported, reflection,
allowed)
[   +2 ms] W/cr_media(30973): BLUETOOTH_CONNECT permission is missing.
[   +1 ms] W/cr_media(30973): registerBluetoothIntentsIfNeeded: Requires BLUETOOTH permission
[   +3 ms] D/HostConnection(30973): createUnique: call
[        ] D/HostConnection(30973): HostConnection::get() New Host Connection established 0xb40000780de3a690, tid 31096
[   +2 ms] D/HostConnection(30973): HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2
ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1
ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings
ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV_Cache ANDROID_EMU_vulkan_ignored_handles
ANDROID_EMU_has_shared_slots_host_memory_allocator ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8
ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_vulkan_queue_submit_with_commands ANDROID_EMU_sync_buffer_data
ANDROID_EMU_read_color_buffer_dma GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr
ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_3_0 
[   +1 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de378d0: maj 3 min 0 rcv 3
[        ] D/EGL_emulation(30973): eglMakeCurrent: 0xb40000780de378d0: ver 3 0 (tinfo 0x7a27e02280) (first time)
[   +2 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 0
[  +14 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +35 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de378d0: maj 3 min 0 rcv 3
[  +58 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +18 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +75 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de3cf10: maj 3 min 0 rcv 3
[ +201 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +882 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[        ] D/EGL_emulation(30973): app_time_stats: avg=316.15ms min=19.10ms max=879.06ms count=4
[   +1 ms] D/EGL_emulation(30973): app_time_stats: avg=1217.23ms min=7.11ms max=3704.63ms count=4
[   +6 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +9 ms] D/EGL_emulation(30973): app_time_stats: avg=444.81ms min=2.50ms max=3099.56ms count=11
[   +2 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +15 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +15 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +9 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[   +6 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +20 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +23 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +6 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +15 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +19 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +14 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[+1268 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[  +70 ms] D/EGL_emulation(30973): app_time_stats: avg=47.31ms min=1.90ms max=1060.57ms count=28
[ +136 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de40210: maj 3 min 0 rcv 3
[   +5 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 1
[   +6 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +29 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +3 ms] D/EGL_emulation(30973): app_time_stats: avg=95.15ms min=4.36ms max=1224.48ms count=17
[  +13 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +14 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +156 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +578 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +441 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[        ] D/EGL_emulation(30973): app_time_stats: avg=246.72ms min=13.27ms max=1022.19ms count=5
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[   +2 ms] D/EGL_emulation(30973): app_time_stats: avg=302.08ms min=14.11ms max=1021.72ms count=4
[   +3 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +14 ms] D/EGL_emulation(30973): app_time_stats: avg=36.42ms min=1.61ms max=919.28ms count=30
[        ] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +19 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +14 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +15 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +15 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +15 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +282 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +455 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[ +545 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +459 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[ +534 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +464 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[ +544 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +447 ms] D/EGL_emulation(30973): app_time_stats: avg=248.03ms min=9.79ms max=3719.59ms count=16
[   +3 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[ +114 ms] D/EGL_emulation(30973): app_time_stats: avg=230.72ms min=4.67ms max=3839.01ms count=17
[ +431 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[+1005 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +994 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[   +7 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +993 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[   +1 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +994 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[+1008 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +111 ms] D/EGL_emulation(30973): app_time_stats: avg=202.05ms min=1.52ms max=5206.23ms count=27
[ +260 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de44350: maj 3 min 0 rcv 3
[   +2 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 2
[   +8 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +34 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +4 ms] D/EGL_emulation(30973): app_time_stats: avg=5860.65ms min=5860.65ms max=5860.65ms count=1
[   +7 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +74 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +486 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +528 ms] D/EGL_emulation(30973): app_time_stats: avg=14.17ms min=1.67ms max=459.76ms count=56
[  +90 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de3bb90: maj 3 min 0 rcv 3
[   +8 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 3
[   +4 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +21 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +2 ms] D/EGL_emulation(30973): app_time_stats: avg=304.17ms min=9.33ms max=971.90ms count=4
[   +4 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +30 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +306 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[   +1 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[ +639 ms] D/EGL_emulation(30973): app_time_stats: avg=18.29ms min=2.52ms max=187.85ms count=55
[ +129 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de41b90: maj 3 min 0 rcv 3
[   +4 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 4
[   +5 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +18 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +2 ms] D/EGL_emulation(30973): app_time_stats: avg=285.36ms min=6.25ms max=733.61ms count=4
[   +7 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +31 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +157 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[ +236 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de423d0: maj 3 min 0 rcv 3
[   +4 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 5
[   +3 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +14 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +13 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +22 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +11 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +257 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de39490: maj 3 min 0 rcv 3
[  +13 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 6
[   +2 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +14 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +12 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +1 ms] D/EGL_emulation(30973): app_time_stats: avg=16.66ms min=7.55ms max=25.91ms count=60
[  +19 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +12 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +16 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +18 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +242 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de3f3d0: maj 3 min 0 rcv 3
[   +8 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 7
[        ] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +12 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +2 ms] D/EGL_emulation(30973): app_time_stats: avg=64.75ms min=9.61ms max=208.93ms count=18
[   +5 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +20 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[  +26 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +271 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de48850: maj 3 min 0 rcv 3
[   +9 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 8
[        ] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +8 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +26 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +295 ms] D/EGL_emulation(30973): app_time_stats: avg=16.61ms min=12.57ms max=21.64ms count=61
[ +354 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[   +3 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[ +968 ms] D/EGL_emulation(30973): app_time_stats: avg=110.60ms min=13.50ms max=1142.96ms count=12
[  +20 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #9", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[  +68 ms] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 9
[   +3 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de4e550: maj 3 min 0 rcv 3
[   +3 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +18 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +4 ms] D/EGL_emulation(30973): app_time_stats: avg=265.20ms min=5.75ms max=1631.61ms count=8
[   +6 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +50 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +220 ms] D/EGL_emulation(30973): eglCreateContext: 0xb40000780de43450: maj 3 min 0 rcv 3
[        ] I/PlatformViewsController(30973): Hosting view in view hierarchy for platform view: 10
[   +3 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +17 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[   +6 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[  +35 ms] E/FrameEvents(30973): updateAcquireFence: Did not find frame.
[ +554 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[  +40 ms] D/EGL_emulation(30973): app_time_stats: avg=22.04ms min=6.25ms max=284.86ms count=48
[  +98 ms] D/EGL_emulation(30973): app_time_stats: avg=146.78ms min=5.65ms max=691.15ms count=7
[ +871 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[ +994 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[   +2 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[   +2 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[ +996 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[   +6 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[   +1 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[ +987 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[   +3 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[+1032 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[ +961 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[+1001 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[ +996 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[ +998 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[   +1 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[ +999 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[  +12 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[ +993 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
[+1002 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #11", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #2", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #3", source:  (2)
[   +5 ms] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #1", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #4", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #5", source:  (2)
[        ] I/chromium(30973): [INFO:CONSOLE(2)] "howdy from webview #8", source:  (2)
```


```
flutter analyze
Analyzing bug...                                                        
No issues found! (ran in 1.0s)
```

<!-- Finally, paste the output of running `flutter doctor -v` here. -->

```
[✓] Flutter (Channel master, 3.7.0-31.0.pre.24, on macOS 12.2.1 21D62 darwin-arm64, locale en-US)
    • Flutter version 3.7.0-31.0.pre.24 on channel master at /Users/davidhicks/Development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 7ba440655a (6 hours ago), 2023-01-30 20:37:21 -0800
    • Engine revision 9448f2966c
    • Dart version 3.0.0 (build 3.0.0-179.0.dev)
    • DevTools version 2.20.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/davidhicks/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • ANDROID_HOME = /Users/davidhicks/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.4.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13F100
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[✓] VS Code (version 1.74.3)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.58.0

[✓] Connected device (3 available)
    • sdk gphone64 arm64 (mobile) • emulator-5554 • android-arm64  • Android 12 (API 31) (emulator)
    • macOS (desktop)             • macos         • darwin-arm64   • macOS 12.2.1 21D62 darwin-arm64
    • Chrome (web)                • chrome        • web-javascript • Google Chrome 109.0.5414.119

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!
```

</details>

Would it be possible to provide a manual disposal method? And, on that note, supposing there is an issue and I'm not just going crazy, is there a manual disposal method that can be implemented by us prior to an official fix being released? We use several web views for our core content, and I have noticed that all parts of our app become significantly slower after opening our mobile website in a web view. This occurs even after navigating away from the web view.