Repository: flutter
Issue: GoRouter should better deal with multiple path separators
Labels: package,has reproducible steps,P2,p: go_router,team-go_router,triaged-go_router,found in release: 3.22

### Steps to reproduce

In my case this problem is specifically in regards to using Deep links with GoRouter, but I believe it would affect GoRouter regardless of deep links.

Problem:
Browsers for better or worse deal with certain strange URLs just fine.  For example all 3 of the following links properly goto the same place:

https://github.com/flutter/flutter
https://github.com//////flutter/flutter
https://github.com/flutter/////flutter

In reading more on the topic according to RFC https://datatracker.ietf.org/doc/html/rfc3986 its actually ok to have multiple path separators, ie. slashes.  Which is why I guess those URLs work just fine in browsers.  

However, GoRouter does not understand the extra `/` and will not properly route if there is more then 1 path separator.  

I think GoRouter should also route the same way

### Expected results

GoRouter should route the same way a browser does and disregard the extra `/`

### Actual results

GoRouter does not properly route

### Code sample

<details open><summary>Code sample</summary>

```dart
void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  MyApp({Key? key}) : super(key: key);

  final _router = GoRouter(
      initialLocation: '/',
      routes: [
    GoRoute(
      name: 'home',
      path: '/',
      pageBuilder: (context, state) => MaterialPage(
        key: state.pageKey,
        child: const Home(),
      ),
      routes: [
        GoRoute(
          name: 'company',
          path: ':companyId',
          pageBuilder: (context, state) => MaterialPage(
            key: state.pageKey,
            child: Company(
              companyId: state.params['companyId']!,
            ),
          ),
        ),
      ]
    ),
  ]);

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
            theme: ThemeData(
                textSelectionTheme:
                    const TextSelectionThemeData(selectionColor: Constants.sideColor)),
            routeInformationParser: _router.routeInformationParser,
            routerDelegate: _router.routerDelegate,
            debugShowCheckedModeBanner: false,
            scrollBehavior: AppScrollBehavior(),
            title: 'Showroom',
           )
      }
}

class Home extends StatelessWidget {
  const Home({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: TextButton(
            onPressed: () {
              GoRouter.of(context).goNamed('company', params: {'companyId': 'company+1'});
            },
            child: Text("Next page")),
      ),
    );
  }
}

class Company extends StatelessWidget {
  const Company({Key? key, required this.companyId}) : super(key: key);

  final String companyId;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text(companyId),
      ),
    );
  }
}
```

</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
Flutter 3.23.0-13.0.pre.300 • channel master • https://github.com/flutter/flutter.git
Framework • revision 1cb003b8fb (4 hours ago) • 2024-06-22 16:41:39 -0700
Engine • revision 33415c6ee7
Tools • Dart 3.5.0 (build 3.5.0-288.0.dev) • DevTools 2.36.0

```

</details>