Dart2 路由器实现
Dart2 Router Implementation
我正在尝试将 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._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]);
}
}
}
我在这一行中遇到错误
var url = _router.generate([routeName, parameters]).component.urlPath;
未为 class 路由器定义生成方法
第二个错误在这里
_router.navigate([routeName, parameters]);
参数类型List无法赋值给参数类型'String'
上述功能在 Dart 1 中运行良好,但当我升级到 Dart 2 时,出现错误,不知道如何解决。
任何人都可以在这方面提供帮助
您需要一个 RoutePath
实例来定义您的 "route"。
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
定义方式,它可能无法正常工作,但这是一般的想法。
RoutePath还有其他几个选项,请查看它们,看看哪个最适合您!
我正在尝试将 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._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]);
}
}
}
我在这一行中遇到错误
var url = _router.generate([routeName, parameters]).component.urlPath;
未为 class 路由器定义生成方法
第二个错误在这里
_router.navigate([routeName, parameters]);
参数类型List无法赋值给参数类型'String'
上述功能在 Dart 1 中运行良好,但当我升级到 Dart 2 时,出现错误,不知道如何解决。
任何人都可以在这方面提供帮助
您需要一个 RoutePath
实例来定义您的 "route"。
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
定义方式,它可能无法正常工作,但这是一般的想法。
RoutePath还有其他几个选项,请查看它们,看看哪个最适合您!