navigate method
void
navigate(
- String link, {
- bool named = false,
- bool push = false,
- bool replaceCurrent = false,
- String? errorRoute,
- Map<String, String>? queryParams,
- Map<String, String>? params,
- required Map<String, dynamic> eventProps,
})
override
Implementation
@override
// ignore: long-parameter-list
void navigate(
String link, {
bool named = false,
bool push = false,
bool replaceCurrent = false,
Map<String, dynamic>? extra,
String? errorRoute,
Map<String, String>? queryParams,
Map<String, String>? params,
required Map<String, dynamic> eventProps,
}) {
final router = getObject<GoRouter>();
extra ??= {};
extra.addAll({'eventProps': eventProps});
if (push || replaceCurrent) {
if (replaceCurrent) router.pop();
if (named) {
router.pushNamed(link,
extra: extra,
queryParameters: queryParams ?? {},
pathParameters: params ?? {});
} else {
var finalLink = link;
if (queryParams != null && queryParams.isNotEmpty) {
final providedLink = Uri.parse(link);
finalLink = providedLink.replace(queryParameters: {
...providedLink.queryParameters,
...queryParams
}).toString();
}
router.push(
finalLink,
extra: extra,
);
}
return;
}
if (named) {
router.goNamed(link,
extra: extra,
queryParameters: queryParams ?? {},
pathParameters: params ?? {});
} else {
router.go(
link,
extra: extra,
);
}
}