【问题标题】:Dart2 Router ImplementationDart2 路由器实现
【发布时间】:2019-08-19 12:24:18
【问题描述】:

我正在尝试将 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;

没有为类Router定义方法generate

第二个错误在这里

_router.navigate([routeName, parameters]);

参数类型List不能赋值给参数类型'String'

上述功能在 Dart 1 中运行良好,但当我升级到 Dart 2 时,出现错误,不知道如何解决。

任何人都可以在这方面提供帮助

【问题讨论】:

    标签: dart angular-dart


    【解决方案1】:

    您需要一个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 的定义方式,它可能无法正常工作,但这是一般的想法。

    RoutePath 还有其他几个选项,请查看它们,看看哪种最适合您!

    【讨论】:

      猜你喜欢
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多