1)我不知道这样做的任何好方法。您可以侦听每个 url (.*),然后手动检查 $path 是否与其他 url 匹配,但这有点混乱:
var homeUrl = new UrlPattern(r'/home');
var contactUrl = new UrlPattern(r'/contact');
var router = new Router()
..addHandler(new url.UrlPattern(r'(.*)'), matchPages)
..listen();
void matchPages(String path) {
if(homeUrl.matches(path)) {
// Handle home page display
} else if(contactUrl.matches(path)) {
// Contact page
} else {
// No match, handle it how you wish
}
}
最好有一种在客户端处理默认路由的内置方式。
2) Justin Fagnani(Route 包的作者)指出,您可以从单独的网络服务器(即不是 Dart 编辑器提供的服务器)为您的应用程序提供服务,也可以使用与文件系统路径匹配的路由:(. *)#article 将正确匹配文章,无论 URL 是 localhost:3030/#article 还是 C:/Dart/app/web//out/#article。Github 上有一个未解决的问题:https ://github.com/dart-lang/route/issues/31