GoRoute(
          path: 'path_param/:id', // /path_param/123
          builder: (contex, state) {
            return PathParamScreen();
          },
          routes: [
            GoRoute(
              path: ':name',
              builder: (context, state) {
                return PathParamScreen();
              },
            ),
          ],
        ),

id 를 인자값으로 받아올 수 있게 해준다.

이동시에는

ElevatedButton(
            onPressed: () {
              context.go('/path_param/456');
            },
            child: Text('Go Path Param'),
          ),

이렇게 이동을하고

PathParamScreen에서는

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:go_router_v7_actual/layout/default_layout.dart';

class PathParamScreen extends StatelessWidget {
  const PathParamScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return DefaultLayout(
      body: ListView(
        children: [
          Text('Path Param : ${GoRouterState.of(context).pathParameters}'),
          ElevatedButton(
            onPressed: () {
              context.go('/path_param/456/codefactory');
            },
            child: Text(
              'Path Param',
            ),
          ),
        ],
      ),
    );
  }
}

GoRouterState.of(context).pathParameters 로 id 값을 받아올 수 있다.

그리고 name의 경우

context.go('/path_param/456/codefactory');

이런 형태로 작성이 된다.

그리고 pathParam으로 같은 위젯으로 이동한다하더라도 둘은 독립된 위젯이다.