go static method

void go(
  1. GoRouter router,
  2. String location, {
  3. Map<String, String> queryParameters = const <String, String>{},
  4. Object? extra,
})

Accepts query parameters both in location and in queryParameters; the latter take precedence on key collision.

Implementation

static void go(
  GoRouter router,
  String location, {
  Map<String, String> queryParameters = const <String, String>{},
  Object? extra,
}) {
  final currentState = router.state;
  final uri = Uri.parse(location);

  final mergedQueryParams = mergeQueryParametersForGo(
    currentQueryParams: currentState.uri.queryParameters,
    locationQueryParams: uri.queryParameters,
    newQueryParams: queryParameters,
  );

  final newUri = Uri(path: uri.path, queryParameters: mergedQueryParams.isEmpty ? null : mergedQueryParams);

  router.go(newUri.toString(), extra: extra ?? currentState.extra);
}