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으로 같은 위젯으로 이동한다하더라도 둘은 독립된 위젯이다.