1.基于注册的路由器或者是[MaterialApp]注册的路由器
/// [context]上下文
/// [pageName]页面名称
/// [params]参数
/// [replace] 是否将当前页面从路由中移除
/// [clear] 是否清除
Future<dynamic> open(BuildContext context, String pageName,
{Object? params, bool replace = false, bool clear = false}) {
var route = router(RouteSettings(name: pageName, arguments: params));
if (route != null) {
if (clear || pageName == homePageName) {
return Navigator.pushAndRemoveUntil(context, route, (route) => false);
} else if (replace) {
return Navigator.pushReplacement(context, route);
} else {
return Navigator.push(context, route);
}
} else {
if (pageName == homePageName) {
return Navigator.pushNamedAndRemoveUntil(
context, pageName, (route) => false,
arguments: params);
} else if (replace) {
return Navigator.pushReplacementNamed(context, pageName,
arguments: para