Dart2路由器的实现
我正在尝试将Dart1应用程序升级到Dart 2.4,我在路由器中遇到一个问题。我的代码如下所示Dart2路由器的实现,dart,angular-dart,Dart,Angular Dart,我正在尝试将Dart1应用程序升级到Dart 2.4,我在路由器中遇到一个问题。我的代码如下所示 import 'dart:async'; import 'dart:convert'; import 'package:angular/src/core/di/decorators.dart'; @Injectable() class SpRouterImpl implements SpRouter { final Router _router; SpRouterImpl(this._rout
import 'dart:async';
import 'dart:convert';
import 'package:angular/src/core/di/decorators.dart';
@Injectable()
class SpRouterImpl implements SpRouter {
final Router _router;
SpRouterImpl(this._router);
@override
void go(String routeName, Map<String, String> parameters,
[bool openInNewWindow = false]) {
if (openInNewWindow) {
var url = _router.generate([routeName, parameters]).component.urlPath;
window.open(url, "_blank");
} else {
_router.navigate([routeName, parameters]);
}
}
}
未为类Router定义方法generate
第二个错误在这里
_router.navigate([routeName, parameters]);
无法将参数类型列表分配给参数类型“String”
上面的函数在Dart 1中运行良好,但当我升级到Dart 2时,我发现了错误,不知道如何解决
在这方面是否有人可以提供帮助您需要一个RoutePath实例来定义您的路由
final search = RoutePath(path: "search/:term"); // term is the parameter
然后使用该路径导航到该路线
_router.navigate(search.toUrl(parameters: {'term': searchTerm}));
因此,在您的情况下,它可能如下所示:
import 'dart:async';
import 'dart:convert';
import 'package:angular/src/core/di/decorators.dart';
@Injectable()
class SpRouterImpl implements SpRouter {
final Router _router;
SpRouterImpl(this._router);
@override
void go(String routeName, Map<String, String> parameters,
[bool openInNewWindow = false]) {
final path = RoutePath(routeName);
final url = path.toUrl(parameters: parameters)
if (openInNewWindow) {
window.open(url, "_blank");
} else {
_router.navigate(url);
}
}
}
根据routeName是如何定义的,它可能不会出现并起作用,但这是一般的想法
有几个其他的选择,看看他们,看看什么最适合你
import 'dart:async';
import 'dart:convert';
import 'package:angular/src/core/di/decorators.dart';
@Injectable()
class SpRouterImpl implements SpRouter {
final Router _router;
SpRouterImpl(this._router);
@override
void go(String routeName, Map<String, String> parameters,
[bool openInNewWindow = false]) {
final path = RoutePath(routeName);
final url = path.toUrl(parameters: parameters)
if (openInNewWindow) {
window.open(url, "_blank");
} else {
_router.navigate(url);
}
}
}