如何使用Dart路由API
我已经创建了一个示例应用程序来测试。我有以下代码:如何使用Dart路由API,dart,html5-history,Dart,Html5 History,我已经创建了一个示例应用程序来测试。我有以下代码: url.dart 库url; 导入“package:route/url_pattern.dart”; 最终homeUrl=新的URL模式(r'/'); 最终的otherScreenUrl=新的URL模式(r'/other_screen/); main.html 试验 main.dart 导入'dart:html'; 导入“package:route/client.dart”; 导入“url.dart”; void main(){ var
url.dart
库url;
导入“package:route/url_pattern.dart”;
最终homeUrl=新的URL模式(r'/');
最终的otherScreenUrl=新的URL模式(r'/other_screen/);
main.html
试验
main.dart
导入'dart:html';
导入“package:route/client.dart”;
导入“url.dart”;
void main(){
var router=新路由器()
…addHandler(homeUrl,\u showHome)
..addHandler(其他屏幕URL,\u showOtherScreen)
…听();
查询选择器(“示例文本id”)
…text=“单击我!”
…点击一次。听一听(_gotoOtherScreen);
}
_gotoOtherScreen(MouseeEvent事件){
//我正在尝试使用history.pushState导航到“其他屏幕”
window.history.pushState({'url':otherScreenUrl},“other screen”,otherScreenUrl);
}
_showHome(字符串路径){
查询选择器(“其他元素”)
…移除();
}
_showOtherScreen(字符串路径){
查询选择器(“样本容器id”)
…追加(新元素()
..innerHtml=“现在在其他屏幕中”
..id=“其他要素”);
}
运行应用程序,然后单击
标记时,我遇到以下错误:
异常中断:非法参数:找不到的处理程序
/test/web/main.html
异常:非法参数:找不到的处理程序
/test/web/main.html路由器。\u getUrl(包:route/client.dart:53:7)
Router.handle(包:route/client.dart:71:22)听我说。(套餐:路线/客户。省道:102:15) 异常时中断:类型“UrlPattern”不是类型的子类型 “url”的“字符串” 例外情况:“UrlPattern”类型不是的“String”类型的子类型 “url”_gotoOtherScreen
(http://127.0.0.1:3030/test/web/main.dart:18:27)
应该如何使用路由API?我做错了什么?以下是解决上述问题的更新代码:
url.dart
库url;
导入“package:route/url_pattern.dart”;
final homeUrl=新的URL模式(r'(.*)/);
final homerlWithFile=新的UrlPattern(r'(.*)/main.html');
最终的otherScreenUrl=新的URL模式(r'(.*)/other_screen');
main.html
试验
main.dart
导入'dart:html';
导入“package:route/client.dart”;
导入“url.dart”;
void main(){
var router=新路由器()
…addHandler(homeUrl,\u showHome)
..addHandler(homeUrlWithFile,_showHome)
..addHandler(其他屏幕URL,\u showOtherScreen)
…听();
}
_showHome(字符串路径){
变量e=查询选择器(“其他元素”);
如果(e!=null)e.remove();
}
_showOtherScreen(字符串路径){
查询选择器(“样本容器id”)
…追加(新元素()
..innerHtml=“现在在其他屏幕中”
..id=“其他要素”);
}