Repository: flutter
Issue: [Webview] TextFields gets covered by keyboard after switching text field and we can't scroll to the textfields
Labels: a: text input,platform-ios,f: scrolling,has reproducible steps,P2,team-ios,triaged-ios,found in release: 3.22,found in release: 3.24

### Steps to reproduce

1. scroll to the bottom
2. click the first field (the keyboard will jump up
3. click the second field

### Expected results

We can scroll to the bottom

### Actual results

I guess It is like return to the full size, without considering the keyboard. As a result we cannot scroll to the textfields

### Code sample

<details open><summary>Code sample</summary>

``` dart
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

// #docregion platform_imports
// Import for Android features.
import 'package:webview_flutter_android/webview_flutter_android.dart';
// Import for iOS features.
import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart';

const String mainUrl = 'http://127.0.0.1:5500/test.html';

void main() => runApp(const App());

class App extends StatelessWidget {
  const App({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MainHomePage(),
    );
  }
}

class MainHomePage extends StatefulWidget {
  const MainHomePage({super.key});

  @override
  State<MainHomePage> createState() => _MainHomePageState();
}

class _MainHomePageState extends State<MainHomePage> {
  late final WebViewController _controller;

  @override
  void initState() {
    super.initState();

    String url = mainUrl;

    // #docregion platform_features
    late final PlatformWebViewControllerCreationParams params;
    if (WebViewPlatform.instance is WebKitWebViewPlatform) {
      params = WebKitWebViewControllerCreationParams(
        allowsInlineMediaPlayback: true,
        mediaTypesRequiringUserAction: const <PlaybackMediaTypes>{},
      );
    } else {
      params = const PlatformWebViewControllerCreationParams();
    }

    final WebViewController controller =
        WebViewController.fromPlatformCreationParams(params);

    controller
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..setBackgroundColor(const Color(0x00000000))
      ..setNavigationDelegate(
        NavigationDelegate(
          onProgress: (int progress) {},
          onPageStarted: (String url) {},
          onPageFinished: (String url) async {},
          onWebResourceError: (WebResourceError error) {},
          onNavigationRequest: (NavigationRequest request) {
            return NavigationDecision.navigate;
          },
        ),
      )
      ..loadRequest(Uri.parse(url));

    // #docregion platform_features
    if (controller.platform is AndroidWebViewController) {
      AndroidWebViewController.enableDebugging(true);
      (controller.platform as AndroidWebViewController)
          .setMediaPlaybackRequiresUserGesture(false);
    }

    _controller = controller;
  }

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        resizeToAvoidBottomInset: true,
        body: WebViewWidget(
          controller: _controller,
        ),
      ),
    );
  }
}

```

``` html
<!DOCTYPE html>
<html lang="en" style="background-color: white">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Test Website</title>
  </head>

  <body>
    <h1>Test Website Content</h1>

    <p>
      This is a paragraph of test content. It's here to provide some text for
      testing purposes.
    </p>

    <ul>
      <li>Test item 1</li>
      <li>Test item 2</li>
      <li>Test item 3</li>
    </ul>

    <p>
      Here's another paragraph with more test content. This helps to ensure we
      have a substantial amount of text on the page.
    </p>

    <h2>Test Subheading</h2>

    <p>
      Even more test content goes here. We're adding a variety of elements to
      give plenty of testing options.
    </p>

    <ol>
      <li>First test point</li>
      <li>Second test point</li>
      <li>Third test point</li>
    </ol>

    <p>
      And here's one final paragraph of test content to really make sure we have
      a lot to work with.
    </p>
    <!-- checkboxes -->
    <table id="table0" class="inputArea clearfix">
      <!-- Block -->
      <tr>
        <td><input type="text" value="" /></td>
      </tr>
      <!-- Building -->
      <tr>
        <td><input type="text" value="" /></td>
      </tr>
      <!-- Room number -->
      <tr>
        <td><input type="text" value="" /></td>
      </tr>
    </table>

    <!-- Next button -->
    <button type="submit">Next</button>
    <button type="submit">Previous</button>
  </body>
</html>

```

</details>


### Screenshots or Video

<details open>
<summary>Screenshots / Video demonstration</summary>


https://github.com/user-attachments/assets/f8fb99cf-f842-4da8-ae3e-4d6291deb081

</details>





### Logs

<details open><summary>Logs</summary>

```console

```

</details>


### Flutter Doctor output

<details open><summary>Doctor output</summary>

```console
❯ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.22.2, on macOS 14.3 23D56 darwin-arm64, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.1)
[✓] VS Code (version 1.91.1)
[✓] Connected device (4 available)
[✓] Network resources

• No issues found!
```

</details>