Repository: flutter
Issue: `onFieldSubmitted` called when `IconButton` pressed in `suffixIcon` on `TextFormField` on iOS web
Labels: a: text input,platform-ios,framework,f: gestures,platform-web,has reproducible steps,P3,c: parity,found in release: 3.7,found in release: 3.8,team-web,triaged-web

## Steps to Reproduce
1. Create a sample counter app
2. Open `lib/main.dart` and replace `_MyHomePageState` with the code snippet below
3. Run the app locally on browser
4. View the app on safari of the iOS emulator or physical device 
5. Tab the TextField to gain focus and tap show/hide to change the obscure state of the field

**Expected results:**
The field remain focus and onFieldSubmitted should not be fired

**Actual results:** 
The field lose focus and onFieldSubmitted fired

#### Other note
-  The same code tested on desktop browser works as expected, but not on iOS safari. 
-  The issue disappear after focus/unfocus twice. Refresh the page will reset and make the issue appear again. (I am suspecting that after the initial soft keyboard show/hide, the issue disappear and it works fine afterward.)
-  I have tried to run the app with `canvaskit` or `html`, both have the same problem which shall eliminate the affect of rendering engine

```dart
class _MyHomePageState extends State<MyHomePage> {
  final GlobalKey<_MyHomePageState> _key = GlobalKey();

  late final TextEditingController _controller;
  late bool _visible;
  late bool _hasFocus;
  late final FocusNode _focus;
  late bool _fired;

  @override
  void initState() {
    _fired = false;
    _hasFocus = false;
    _focus = FocusNode();
    _focus.addListener(() {
      setState(() {
        _hasFocus = _focus.hasFocus;
      });
    });
    _controller = TextEditingController();
    _visible = false;
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Container(
          padding: const EdgeInsets.all(20),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('HasFocus: $_hasFocus'),
              Text('Fired: $_fired'),
              Form(
                key: _key,
                child: TextFormField(
                  onFieldSubmitted: (value) {
                    setState(() {
                      _fired = true;
                    });
                  },
                  focusNode: _focus,
                  controller: _controller,
                  obscureText: _visible,
                  decoration: InputDecoration(
                    suffixIcon: IconButton(
                      icon: Icon(
                          _visible ? Icons.visibility : Icons.visibility_off),
                      onPressed: () {
                        setState(() {
                          _visible = !_visible;
                        });
                      },
                    ),
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
```
### Screen recording
https://user-images.githubusercontent.com/12775115/217721492-d3ba9f81-8c95-4afe-bc1b-39e274d9da6d.mp4

### flutter doctor
```
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.7.1, on macOS 13.2 22D49 darwin-arm64, locale en-CA)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
[✓] Chrome - develop for the web
[!] Android Studio (version 2022.1)
    ✗ Unable to find bundled Java version.
[✓] IntelliJ IDEA Ultimate Edition (version 2022.2.4)
[✓] Connected device (4 available)
[✓] HTTP Host Availability
```