Repository: flutter
Issue: [GoRouter] Simultaneous Button Taps Trigger Multiple Navigation Events
Labels: package,has reproducible steps,P2,p: go_router,team-go_router,triaged-go_router,found in release: 3.27,found in release: 3.28

### Steps to reproduce
1. Set up GoRouter with two routes:
Define two screens (ScreenA and ScreenB).
Add the routes for these screens to your GoRouter configuration.

2. Create a screen with two buttons:
Place two buttons (ButtonA and ButtonB) on the same screen.
Each button should navigate to a different screen using GoRouter.go().

3. Simulate simultaneous button presses:
Run the app and navigate to the screen with the buttons.
Tap both buttons at the same time.

### Expected results
When two buttons are tapped simultaneously:
Only the navigation event for the button tapped first should be processed.
The second navigation event should be ignored, ensuring only one new screen is opened.
This behavior aligns with how Navigator 1.0 handles simultaneous navigation requests.

### Actual results

Both navigation events are processed, and two screens are pushed onto the stack, resulting in unintended behavior.

### Code sample

<details open><summary>Code sample</summary>

```dart
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  final GoRouter _router = GoRouter(
    routes: [
      GoRoute(
        path: '/',
        name: 'home',
        builder: (context, state) => HomeScreen(),
      ),
      GoRoute(
        path: '/screenA',
        name: 'screenA',
        builder: (context, state) => ScreenA(),
      ),
      GoRoute(
        path: '/screenB',
        name: 'screenB',
        builder: (context, state) => ScreenB(),
      ),
    ],
  );

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routerConfig: _router,
    );
  }
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Home')),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          ElevatedButton(
            onPressed: () => GoRouter.of(context).pushNamed('screenA'),
            child: Text('Go to Screen A'),
          ),
          ElevatedButton(
            onPressed: () => GoRouter.of(context).pushNamed('screenB'),
            child: Text('Go to Screen B'),
          ),
        ],
      ),
    );
  }
}

class ScreenA extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Screen A')),
      body: Center(child: Text('Welcome to Screen A')),
    );
  }
}

class ScreenB extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Screen B')),
      body: Center(child: Text('Welcome to Screen B')),
    );
  }
}
```

</details>


### Screenshots or Video

<details open>
<summary>Screenshots / Video demonstration</summary>

[Upload media here]

</details>


### Logs

<details open><summary>Logs</summary>

```console
[Paste your logs here]
```

</details>


### Flutter Doctor output

<details open><summary>Doctor output</summary>

```console
[Paste your output here]
```

</details>